2012-06-05 33 views
5

दो के पूरक दो कंप्यूटरों के घटाने की गणना करने के लिए कंप्यूटर के लिए आसान बनाने के लिए सेट है। लेकिन कंप्यूटर एक पूर्णांक को अलग करने के लिए पूर्णांक या हस्ताक्षरित पूर्णांक पर हस्ताक्षर कैसे किया जाता है? इसकी स्मृति में यह 0 और 1 है।कंप्यूटर पूर्णांक में अंतर कैसे हस्ताक्षरित या हस्ताक्षरित है?

कंप्यूटर मेमोरी में 1111 1111 कंप्यूटर मेमोरी में 255 का प्रतिनिधित्व कर सकता है लेकिन यह भी प्रतिनिधित्व कर सकता है -1।

+0

देखें http://en.wikipedia.org/wiki/Signness और http://en.wikipedia.org/wiki/Signed_number_representations – mtijn

+0

मैं नहीं पूछता कि कंप्यूटर में हस्ताक्षरित हस्ताक्षरित संख्या – viperchaos

+0

क्या आपने पढ़ा लिंक? उन्हें पोस्ट किया गया था क्योंकि वे आपके प्रश्न – mtijn

उत्तर

10

हस्ताक्षरित और हस्ताक्षरित एक ही डेटा का उपयोग करें, लेकिन विभिन्न निर्देश।

कंप्यूटर एक ही डेटा के रूप में हस्ताक्षरित और हस्ताक्षरित पूर्णांक स्टोर करता है। अर्थात। 255 और -1 एक ही बिट्स हैं। हालांकि, आप कंपाइलर को बताते हैं कि चर किस प्रकार है। यदि यह हस्ताक्षरित है, तो कंपाइलर चर (या आईडीआईवी) में हेरफेर करने के लिए हस्ताक्षरित ऑपरेटरों का उपयोग करता है और जब हस्ताक्षरित होता है, तो यह एक और निर्देश (उदा। डीआईवी) का उपयोग करता है। तो संकलक एक प्रोग्राम बनाता है जो सीपीयू को डेटा की व्याख्या कैसे करता है।

+1

से प्रासंगिक हैं, यह ध्यान देने योग्य है कि अधिकतर CPUs पर निर्देश केवल गुणा (एमएएल/आईएमयूएल के लिए आईए 32) और विभाजन (डीआईवी/आईडीआईवी) ([निर्देश संदर्भ] (http: //www.posix.nl/linuxassembly/nasmdochtml/nasmdoca.html))। 2 के पूरक के बारे में निफ्टी चीज वास्तव में नहीं है कि घटाना आसान है, लेकिन उस जोड़ (एडीडी) परवाह नहीं है अगर संख्याएं हस्ताक्षरित हैं या हस्ताक्षरित हैं। इस वजह से, घटाव वास्तव में आसान है, क्योंकि किसी को घटाने के लिए आसानी से subtrahend के 2 के पूरक की गणना कर सकते हैं और इसे minuend में जोड़ सकते हैं। –

2

यह उन्हें अलग नहीं करता है। लेकिन पूरक के साथ, गणना समान है:

नीचे, d को दशमलव संख्याओं और b बाइनरी संख्याओं में जोड़ा जाएगा। कंप्यूटेशंस 8 बिट्स पूर्णांक पर होंगे।

-1d + 1d = 1111 1111b + 1b = 1 0000 0000b

लेकिन चूंकि हम overflowed (हां, कि 8 0 और एक 8 बिट पूर्णांकों पर एक 1 है), परिणाम 0.

-2d + 1d = 1111 1110b + 1b = 1111 1111b = -1d

-1d + 2d = 1111 1111b + 10b = 1 0000 0001b (this overflows) = 1b = 1d

के बराबर है

-1d + -1d = 1111 1111b + 1111 1111b = 1 1111 1110b (this overflows) = 1111 1110b = -2d

और अगर आप अहस्ताक्षरित पर इन आपरेशनों पर विचार (बाइनरी मूल्यों में बदलाव नहीं होगा):

255d + 1d = 1111 1111b + 1b = 1 0000 0000b (this overflows) = 0d

254d + 1d = 1111 1110b + 1b = 1111 1111b = 255d

255d + 2d = 1111 1111b + 10b = 1 0000 0001b (this overflows) = 1b = 1d

255d + 255d = 1111 1111b + 1111 1111b = 1 1111 1110b (this overflows) = 1111 1110b = 2d

अहस्ताक्षरित बनाम हस्ताक्षर किए इस प्रकार बस का एक दृश्य प्रतिनिधित्व है हस्ताक्षरित, केवल मानव को प्रदर्शित करते समय उपयोग किया जाता है :-)