2011-02-09 16 views
5

पर हस्ताक्षर किए, मैं डेटा प्रकार श्रेणियों पर विचार कर रहा था, एक सवाल उठता है। के रूप में हम पर हस्ताक्षर किए जानते चार की रेंज -128 127 से मुझे मिल गया है कि कैसे 127 आता है, अर्थात 0111111 = +127ने दो पूरक पूरक अंकगणित

लेकिन मैं नहीं मिल सका कैसे -128 आता है? अगर हम केवल साइन बिट पर हैं तो हमें 11111111 मिलेंगे, यह -128 के बराबर कैसे है?

+0

एफडब्ल्यूआईडब्ल्यू, 0111111 = 63. –

उत्तर

0

ऋणात्मक संख्याओं को संकेत बिट 1 पर सेट है; -128 साइन बिट सेट के साथ मूल्य है लेकिन कोई अन्य बिट्स नहीं है (यानी, यह सबसे छोटा नकारात्मक नंबर है)। -128 का द्विआधारी प्रतिनिधित्व 10000000 है। अन्य डेटा लंबाई के लिए, शून्य के सही संख्या के लिए दो पूरक में सबसे छोटा नकारात्मक संख्या हमेशा 1000... है।

8

अधिकांश समय कंप्यूटर, हस्ताक्षर किए गए पूर्णांक का प्रतिनिधित्व करने के लिए 2 के पूरक कहलाता है।

जिस तरह से 2 के पूरक काम यह है कि संभावित मान एक विशाल पाश में हैं, 0 से MAX_VALUE, MIN_VALUE, शून्य तक, और इसी तरह।

तो न्यूनतम मान अधिकतम मान +1 - 01111111 = 127, और 10000000 = -128 है।

यह अनगिनत अंकगणित के समान व्यवहार करने की अच्छी संपत्ति है - अगर मैं -2 + 1 करना चाहता हूं, तो मेरे पास 11111110 + 00000001 = 11111111 = -1 है, जो सभी समान हार्डवेयर के बिना हस्ताक्षर किए गए हैं।

कम अंत में एक अतिरिक्त मूल्य होने का कारण यह है कि हम उच्च-बिट सेट के साथ सभी संख्याओं को नकारात्मक मानते हैं, जिसका अर्थ है कि 0 सकारात्मक पक्ष से मूल्य लेता है।

+1

यह इंगित करने लायक है कि वहां एक प्रतिनिधित्व है जहां '11111111' न्यूनतम प्रतिनिधित्व योग्य संख्या है, और यह वास्तव में -127 है - यह" साइन-परिमाण "फ़ॉर्म है। साइन-आयाम में, दो शून्य होते हैं - एक '+ 0' और' -0', '00000000' और' 10000000' क्रमशः। – caf

+0

@ आसाद हनीफ, क्या आपको और मदद की ज़रूरत है? यदि यह या कोई अन्य उत्तर आपके लिए उपयोगी था और आपके प्रश्न का उत्तर दिया, तो कृपया उस उत्तर को स्वीकार करना न भूलें। यह भी देखें [इसका उत्तर क्या है जब उत्तर "स्वीकार किया जाता है] (https://meta.stackexchange.com/help/accepted-answer)"? और [वोटिंग महत्वपूर्ण क्यों है] (https://meta.stackexchange.com/help/why-vote)? –

0

इस बारे में सोचने का एक आसान तरीका 01111111 से शुरू करना है और फिर जब तक यह चारों ओर लपेटता है तब तक घटाना जारी रखें; पिछला मान सबसे छोटा नकारात्मक मान है। मानक "उधार" तकनीक का उपयोग करके 00000000 से 1 घटाना 11111111 उत्पन्न करता है, जो वास्तव में -1 के लिए द्विआधारी प्रतिनिधित्व है। हम 10000000 तक घटाना जारी रख सकते हैं, जो -128 है, और एक और उपज घटाकर 01111111 फिर से लपेटता है।

संबंधित मुद्दे