2010-08-10 19 views
10

मैं वर्तमान के बारे में "बिट नगण्य" एक किताब पढ़ रहा हूँ और निम्न सूत्र प्रकट होता है:एक्स-y = x + ¬y + 1 समस्या

x-y = x+¬y+1 

लेकिन यह काम करने के लिए प्रतीत नहीं होता। उदाहरण:

x = 0100 
y = 0010 
x-y = 0010 
¬y = 1101 
¬y+1 = 1110 
x+1110 = 10010 

लेकिन 10010 != 0010...

कहाँ मैं कोई गलती करता था (यदि हो)?

+1

ध्यान दें कि यह इतना नहीं है "बिट नगण्य" यह है के रूप में [ "घटाव की परिभाषा"] (http://en.wikipedia.org/wiki/ दो% 27s_complement) –

उत्तर

23

आपके पास केवल चार बिट सिस्टम है! आपके अंतिम परिणाम के बाईं ओर वह अतिरिक्त 1 मौजूद नहीं हो सकता है। यह होना चाहिए:

x = 0100 
y = 0010 
~y = 1101 
~y + 1 = 1110 
x + 1110 = 0010 

अन्य बिट ओवरफ्लो, और आपके परिणाम का हिस्सा नहीं है। आप two's complement arithmetic पर पढ़ना चाह सकते हैं।

+0

बहुत बहुत धन्यवाद :) अच्छा स्पष्टीकरण। अन्य सभी के लिए भी धन्यवाद। – 0x90

2

आप अतिरिक्त बिट ले जा रहे हैं (किताब हेनरी एस वॉरेन द्वारा "Hacker's Delight"। है)। वास्तविक कंप्यूटर में यदि आप शब्द को बहते हैं, तो थोड़ा गायब हो जाता है। (वास्तव में यह एक वाह झंडा में बचाया जाता है।)।

2

मानते हैं कि संख्या 4 बिट्स तक सीमित है, तो पांचवां 1 छोटा कर दिया जाएगा, जिससे आपको 0010 छोड़ दिया जाएगा।

1

यह सब अतिप्रवाह के बारे में है। कहो x = 2

~x + 1 = -x 

: आप केवल चार बिट है, तो यह 10010 नहीं है, लेकिन 0010.

1

सिर्फ एक 2 के पूरक प्रणाली में जवाब में जोड़ने के लिए,। 4 बिट्स में, यह 0010 है।

~x = 1101 
~x + 1 = 1110 

और 1110 है -2

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