2010-05-28 13 views
10

कैसे नकारात्मक संख्या 32-बिट पर हस्ताक्षर किए पूर्णांक में प्रतिनिधित्व कर रहे हैं? क्या यह दो या एक का पूरक है? या बाईं ओर आखिरी बिट ध्वज की तरह है? उदाहरण के लिए: (-10)कैसे ऋणात्मक संख्याओं 32-बिट पर हस्ताक्षर किए पूर्णांक में प्रतिनिधित्व कर रहे हैं?

+5

किस संदर्भ में? अलग-अलग सिस्टम/प्लेटफॉर्म अलग-अलग काम करेंगे। –

+2

क्या आपका मतलब है "बाईं ओर पहली बार"? –

उत्तर

16

अधिकांश कंप्यूटर इन दिनों पर हस्ताक्षर किए पूर्णांक के लिए two's complement उपयोग करें, लेकिन यह हार्डवेयर वास्तुकला, प्रोग्रामिंग भाषा, या अन्य प्लेटफ़ॉर्म-विशिष्ट मुद्दों से भिन्न हो सकते हैं।

एक two's-पूरक प्रतिनिधित्व के लिए, सबसे महत्वपूर्ण-("वाम-पंथी") बिट एक गैर नकारात्मक पूर्णांक के लिए संकेत बिट के रूप में जाना जाता है, और यह एक नकारात्मक पूर्णांक के लिए निर्धारित किया जाएगा और स्पष्ट। हालांकि, यह सिर्फ एक "ध्वज" से अधिक है। अधिक जानकारी के लिए Wikipedia article देखें।

+0

तो फ्रंट बिट नकारात्मक के लिए 1 और सकारात्मक के लिए 0 होगा? 0 के बारे में क्या? – User

+0

शून्य का प्रतिनिधित्व शून्य के सभी बिट्स द्वारा किया जाता है। –

4

आमतौर पर यह दुक्की-पूरक है।

1
0xFFFFFFFF = -1 
0xFFFFFFFE = -2 
0xFFFFFFFD = -3 
... 

& तो

0

सबसे महत्वपूर्ण बिट (बाईं ओर पिछले बिट) पर ऋणात्मक संख्याओं के लिए निर्धारित है।

+1

क्या आपका मतलब है "बाईं ओर पहली बार"? –

+0

"बाएं से पहली बार" या "दाईं ओर से अंतिम बिट" के बारे में कैसे। :) –

3

C99 मानक से: मूल्य बिट्स, गद्दी बिट्स, और संकेत बिट:

पर हस्ताक्षर किए पूर्णांक प्रकार के लिए, के टुकड़े वस्तु प्रतिनिधित्व होगा तीन समूहों में विभाजित। वहाँ किसी भी गद्दी बिट्स होने की जरूरत नहीं; वहां बिल्कुल एक संकेत बिट होगा। प्रत्येक बिट है कि एक मूल्य के बिट, इसी अहस्ताक्षरित प्रकार (यदि वहाँ पर हस्ताक्षर किए प्रकार और एन अहस्ताक्षरित प्रकार में में एम मूल्य बिट्स हैं वस्तु प्रतिनिधित्व में एक ही बिट के रूप में एक ही मूल्य है करेगा तो एम = एन)। संकेत सा शून्य है, तो यह परिणामस्वरूप मूल्य को प्रभावित नहीं करेगा। संकेत सा एक है, तो मूल्य निम्न तरीकों में से एक में संशोधित किया जाएगा:

- चिह्न के साथ संबंधित मान सा 0 नकार दिया गया (साइन और परिमाण);

- साइन बिट में मूल्य है - (2 एन) (दो पूरक);

- साइन बिट में मूल्य है - (2 एन -1) (वाले 'पूरक)।

इनमें से कौन सा लागू होता है कार्यान्वयन से परिभाषित है, जैसा कि चाहे संकेत बिट 1 के साथ मूल्य और सभी मूल्य बिट्स शून्य (के लिए पहले दो), या संकेत बिट के साथ और सभी मूल्य बिट्स 1 (के लिए एक 'पूरक', एक जाल प्रतिनिधित्व या एक सामान्य मूल्य है। में साइन और परिमाण और लोगों के पूरक का मामला, यदि यह प्रतिनिधित्व सामान्य मान है तो यह को नकारात्मक शून्य कहा जाता है।

0

मुझे लगता है कि इस सवाल का जवाब 0110 1 से preceeded है, बार-बार 28 बार, इसलिए यह दिखाई देता है:

1111 1111 1111 1111 1111 1111 1111 0110;

कदम:

  1. 10 के लिए बिट प्रतिनिधित्व है:

    0000 0000 0000 0000 0000 0000 0000 1010;

  2. 0->1 और 1->0 सभी बिट्स के लिए:

    1111 1111 1111 1111 1111 1111 1111 0101;

  3. पिछले बिट के लिए 1 जोड़ सकते हैं और थोड़ा आगे तक पहुंचने में, हो गया!

    1111 1111 1111 1111 1111 1111 1111 0110;

===

आप 10 के साथ जोड़कर सत्यापित कर सकते हैं, और आप सभी बिट्स के लिए 0 मिल जाएगा। जैसा ऊपर बताया गया है, यह 2-आधारित है और दो पूरक है।

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