डिफ़ॉल्ट रूप से, सी में संख्यात्मक मान हस्ताक्षरित हैं, जिसका अर्थ है कि वे नकारात्मक और सकारात्मक दोनों हो सकते हैं। दूसरी तरफ बिना हस्ताक्षर किए गए मान, नकारात्मक संख्याओं की अनुमति न दें।
क्योंकि यह सब स्मृति के बारे में है, अंत में सभी संख्यात्मक मान बाइनरी में संग्रहीत होते हैं। एक 32 बिट हस्ताक्षरित पूर्णांक में सभी बाइनरी 0 से सभी बाइनरी 1s के मान हो सकते हैं। जब 32 बिट हस्ताक्षरित पूर्णांक की बात आती है, तो इसका मतलब है कि इसकी बिट्स (सबसे महत्वपूर्ण) एक ध्वज है, जो मान को सकारात्मक या नकारात्मक मानता है। तो, यह व्याख्या मुद्दा है, जो बताता है कि मूल्य पर हस्ताक्षर किए गए हैं।
सकारात्मक हस्ताक्षरित मानों को हस्ताक्षरित मानों के समान ही संग्रहीत किया जाता है, लेकिन नकारात्मक संख्या दो पूरक विधि का उपयोग करके संग्रहीत की जाती है।
यदि आप बाइनरी में नकारात्मक मान लिखना चाहते हैं, तो पहले सकारात्मक संख्या लिखें, अगले बिट्स को घुमाएं और आखिरी जोड़ें 1. जब में नकारात्मक मान दो पूरक समान परिमाण की सकारात्मक संख्या में जोड़ा जाता है, तो परिणाम 0.
उदाहरण में हो जाएगा नीचे 8 बिट संख्या के साथ सौदा करने देता है, क्योंकि यह निरीक्षण करने के लिए सरल हो जाएगा:
positive 95: 01011111
negative 95: 10100000 + 1 = 10100001 [positive 161]
0: 01011111 + 10100001 = 100000000
^
|_______ as we're dealing with 8bit numbers,
the 8 bits which means results in 0
तालिका में बस शून्य चिह्न हैं। मूल्यों की प्रत्येक सीमा में पहले नंबर से पहले एक ऋण चिह्न होना चाहिए। –
सभी को धन्यवाद, यहां सभी को +1, मुझे यकीन था कि –