हस्ताक्षरित संख्या अभ्यावेदन: Difference between revisions
(Created page with "{{Short description|Encoding of negative numbers in binary number systems}} {{Refimprove|date=April 2013}} {{distinguish|Signed-digit representation}} कम्प्य...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Encoding of negative numbers in binary number systems}} | {{Short description|Encoding of negative numbers in binary number systems}} | ||
{{distinguish|Signed-digit representation}} | {{distinguish|Signed-digit representation}} | ||
[[ कम्प्यूटिंग ]] में, बाइनरी नंबर सिस्टम में नकारात्मक संख्याओं को एन्कोड करने के लिए [[हस्ताक्षरित संख्या]] प्रतिनिधित्व की आवश्यकता होती है। | [[ कम्प्यूटिंग | कम्प्यूटिंग]] में, बाइनरी नंबर सिस्टम में नकारात्मक संख्याओं को एन्कोड करने के लिए [[हस्ताक्षरित संख्या]] प्रतिनिधित्व की आवश्यकता होती है। | ||
गणित में, किसी भी आधार में [[ऋणात्मक संख्या]]ओं को उपसर्ग में ऋण चिह्न (-) लगाकर दर्शाया जाता है। हालाँकि, रैम या सीपीयू [[प्रोसेसर रजिस्टर]] में, संख्याओं को अतिरिक्त प्रतीकों के बिना, केवल [[ अंश ]]्स के अनुक्रम के रूप में दर्शाया जाता है। हस्ताक्षरित संख्याओं को दर्शाने के लिए [[द्विआधारी अंक प्रणाली]] का विस्तार करने की चार सबसे प्रसिद्ध विधियाँ हैं: #चिह्न-परिमाण|चिह्न-परिमाण, # | गणित में, किसी भी आधार में [[ऋणात्मक संख्या]]ओं को उपसर्ग में ऋण चिह्न (-) लगाकर दर्शाया जाता है। हालाँकि, रैम या सीपीयू [[प्रोसेसर रजिस्टर]] में, संख्याओं को अतिरिक्त प्रतीकों के बिना, केवल [[ अंश |अंश]] ्स के अनुक्रम के रूप में दर्शाया जाता है। हस्ताक्षरित संख्याओं को दर्शाने के लिए [[द्विआधारी अंक प्रणाली]] का विस्तार करने की चार सबसे प्रसिद्ध विधियाँ हैं: #चिह्न-परिमाण|चिह्न-परिमाण, # का पूरक| का पूरक, #दो का पूरक|दो का पूरक, और #अतिरिक्त-के। कुछ वैकल्पिक विधियाँ #Base −2|base −2 का उपयोग करते हुए स्पष्ट संकेतों के बजाय अंतर्निहित संकेतों का उपयोग करती हैं, जैसे नकारात्मक बाइनरी। [[स्थितीय संकेतन]] के लिए संगत तरीके तैयार किए जा सकते हैं, चाहे सकारात्मक, नकारात्मक, भिन्नात्मक, या ऐसे विषयों पर अन्य विस्तार। | ||
ऐसा कोई निश्चित मानदंड नहीं है जिसके आधार पर कोई भी प्रतिनिधित्व सार्वभौमिक रूप से श्रेष्ठ हो। पूर्णांकों के लिए, अधिकांश वर्तमान कंप्यूटिंग उपकरणों में उपयोग किया जाने वाला प्रतिनिधित्व दो का पूरक है, हालांकि UNIVAC 1100/2200 श्रृंखला मेनफ्रेम के पूरक का उपयोग करते हैं। | |||
== इतिहास == | == इतिहास == | ||
डिजिटल कंप्यूटिंग के शुरुआती दिनों को हार्डवेयर प्रौद्योगिकी और गणित प्रौद्योगिकी (नंबरिंग सिस्टम) दोनों के बारे में प्रतिस्पर्धी विचारों द्वारा चिह्नित किया गया था। बड़ी बहसों में से | डिजिटल कंप्यूटिंग के शुरुआती दिनों को हार्डवेयर प्रौद्योगिकी और गणित प्रौद्योगिकी (नंबरिंग सिस्टम) दोनों के बारे में प्रतिस्पर्धी विचारों द्वारा चिह्नित किया गया था। बड़ी बहसों में से नकारात्मक संख्याओं का प्रारूप था, जिसमें उस युग के कुछ शीर्ष विशेषज्ञों ने बहुत मजबूत और भिन्न राय व्यक्त की थी। खेमे ने दो के पूरक, उस व्यवस्था का समर्थन किया जो आज प्रबल है। अन्य शिविर ने लोगों के पूरक का समर्थन किया, जहां सभी बिट्स को उसके सकारात्मक समकक्ष में उलटा करके नकारात्मक मान बनाया जाता है। तीसरे समूह ने संकेत-परिमाण का समर्थन किया, जहां शब्द के उच्चतम-क्रम बिट को टॉगल करके मान को सकारात्मक से नकारात्मक में बदल दिया जाता है। | ||
प्रत्येक प्रणाली के पक्ष और विपक्ष में तर्क थे। | प्रत्येक प्रणाली के पक्ष और विपक्ष में तर्क थे। मेमोरी डंप (1960 के दशक में सामान्य प्रक्रिया) का आसान पता लगाने के लिए साइन-मैग्नीट्यूड की अनुमति दी गई है क्योंकि छोटे संख्यात्मक मान कम 1 बिट का उपयोग करते हैं। ये प्रणालियाँ लोगों को आंतरिक रूप से गणित का पूरक बनाती हैं, इसलिए जब संख्याओं को रजिस्टर से गणित इकाई में प्रेषित किया जाता है तो उन्हें लोगों के पूरक मूल्यों में परिवर्तित करना होगा और फिर जब परिणाम वापस रजिस्टर में प्रेषित किया जाता है तो उन्हें वापस संकेत-परिमाण में परिवर्तित करना होगा।. इलेक्ट्रॉनिक्स को अन्य प्रणालियों की तुलना में अधिक गेटों की आवश्यकता होती है{{snd}} प्रमुख चिंता का विषय तब था जब अलग-अलग ट्रांजिस्टर की लागत और पैकेजिंग महत्वपूर्ण थी। आईबीएम साइन-मैग्नीट्यूड के शुरुआती समर्थकों में से था, उनके [[आईबीएम 704]], [[आईबीएम 709]] और [[आईबीएम 7090]] श्रृंखला के कंप्यूटर शायद इसका उपयोग करने के लिए सबसे प्रसिद्ध सिस्टम थे। | ||
वन्स के पूरक ने कुछ हद तक सरल हार्डवेयर डिज़ाइन की अनुमति दी, क्योंकि गणित इकाई में और उससे पास होने पर मूल्यों को परिवर्तित करने की कोई आवश्यकता नहीं थी। लेकिन इसने संकेत-परिमाण के साथ | वन्स के पूरक ने कुछ हद तक सरल हार्डवेयर डिज़ाइन की अनुमति दी, क्योंकि गणित इकाई में और उससे पास होने पर मूल्यों को परिवर्तित करने की कोई आवश्यकता नहीं थी। लेकिन इसने संकेत-परिमाण के साथ अवांछनीय विशेषता भी साझा की: [[नकारात्मक शून्य]] (−0) का प्रतिनिधित्व करने की क्षमता। नकारात्मक शून्य बिल्कुल सकारात्मक शून्य की तरह व्यवहार करता है: जब किसी भी गणना में ऑपरेंड के रूप में उपयोग किया जाता है, तो परिणाम वही होगा चाहे ऑपरेंड सकारात्मक या नकारात्मक शून्य हो। नुकसान यह है कि शून्य के साथ समानता की जाँच करते समय समान मूल्य के दो रूपों के अस्तित्व के लिए दो तुलनाओं की आवश्यकता होती है। किसी के पूरक घटाव का परिणाम अंततः उधार (नीचे वर्णित) भी हो सकता है। यह तर्क दिया जा सकता है कि यह जोड़ और घटाव तर्क को अधिक जटिल बनाता है या यह इसे सरल बनाता है, क्योंकि घटाव के लिए बस दूसरे ऑपरेंड के बिट्स को उल्टा करने की आवश्यकता होती है क्योंकि यह योजक को पास किया जाता है। [[PDP-1]], CDC 160 श्रृंखला, [[CDC 3000]] श्रृंखला, CDC 6000 श्रृंखला, [[UNIVAC 1100]] श्रृंखला, और [[LINC]] कंप्यूटर पूरक प्रतिनिधित्व का उपयोग करते हैं। | ||
टू का पूरक हार्डवेयर में लागू करना सबसे आसान है, जो इसकी व्यापक लोकप्रियता का अंतिम कारण हो सकता है।<ref>{{cite journal|title=उच्च निष्पादन डीएफई के लिए दो पूरक संगणना साझाकरण गुणक और इसके अनुप्रयोग|first1=Hunsoo|last1=Choo|first2=K.|last2=Muhammad|first3=K.|last3=Roy|journal=IEEE Transactions on Signal Processing|volume=51|issue=2|date=February 2003|pages=458–469|doi=10.1109/TSP.2002.806984|bibcode=2003ITSP...51..458C |url=https://www.academia.edu/29135370}}</ref> प्रारंभिक मेनफ्रेम पर प्रोसेसर में अक्सर हजारों ट्रांजिस्टर शामिल होते थे, इसलिए महत्वपूर्ण संख्या में ट्रांजिस्टर को खत्म करना | टू का पूरक हार्डवेयर में लागू करना सबसे आसान है, जो इसकी व्यापक लोकप्रियता का अंतिम कारण हो सकता है।<ref>{{cite journal|title=उच्च निष्पादन डीएफई के लिए दो पूरक संगणना साझाकरण गुणक और इसके अनुप्रयोग|first1=Hunsoo|last1=Choo|first2=K.|last2=Muhammad|first3=K.|last3=Roy|journal=IEEE Transactions on Signal Processing|volume=51|issue=2|date=February 2003|pages=458–469|doi=10.1109/TSP.2002.806984|bibcode=2003ITSP...51..458C |url=https://www.academia.edu/29135370}}</ref> प्रारंभिक मेनफ्रेम पर प्रोसेसर में अक्सर हजारों ट्रांजिस्टर शामिल होते थे, इसलिए महत्वपूर्ण संख्या में ट्रांजिस्टर को खत्म करना महत्वपूर्ण लागत बचत थी। मेनफ्रेम जैसे आईबीएम सिस्टम/360, [[जीई-600 श्रृंखला]],<ref>{{cite book|url=http://ed-thelen.org/comp-hist/GE-635.html#Binary%20Fixed-Point%20Numbers|title=GE-625 / 635 Programming Reference Manual|publisher=[[General Electric]]|date=January 1966|access-date=August 15, 2013}}</ref> और [[पीडीपी-6]] और [[पीडीपी-10]] दो पूरक का उपयोग करते हैं, जैसे कि [[पीडीपी-5]] और [[पीडीपी-8]] और [[पीडीपी-11]] और [[वैक्स]] मशीनें जैसे मिनी कंप्यूटर। प्रारंभिक एकीकृत-सर्किट-आधारित सीपीयू ([[इंटेल 8080]], आदि) के वास्तुकारों ने भी दो के पूरक गणित का उपयोग करना चुना। जैसे-जैसे आईसी तकनीक उन्नत हुई, x[[86]] सहित लगभग सभी प्रोसेसरों में टू की पूरक तकनीक को अपनाया गया,<ref>{{cite book|url=http://download.intel.com/products/processor/manual/325462.pdf|title=Intel 64 and IA-32 Architectures Software Developer's Manual|at=Section 4.2.1|publisher=[[Intel]]|access-date=August 6, 2013}}</ref> एम68के, पावर आईएसए,<ref>{{cite book|url=https://www.power.org/documentation/power-isa-version-2-07/|title=Power ISA Version 2.07|at=Section 1.4|publisher=[[Power.org]]|access-date=August 6, 2013}},</ref> [[एमआईपीएस वास्तुकला]], [[स्पार्क]], [[एआरएम वास्तुकला]], [[इटेनियम]], [[पीए-जोखिम]], और [[डीईसी अल्फा]]। | ||
== चिह्न-परिमाण == | == चिह्न-परिमाण == | ||
Line 56: | Line 55: | ||
| 11111111 || −127 || 255 | | 11111111 || −127 || 255 | ||
|} | |} | ||
साइन-परिमाण प्रतिनिधित्व में, जिसे साइन-एंड-मैग्नीट्यूड या हस्ताक्षरित परिमाण भी कहा जाता है, | साइन-परिमाण प्रतिनिधित्व में, जिसे साइन-एंड-मैग्नीट्यूड या हस्ताक्षरित परिमाण भी कहा जाता है, हस्ताक्षरित संख्या को [[साइन बिट]] के लिए संख्या के संकेत के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है (अक्सर [[सबसे महत्वपूर्ण बिट]], ए के लिए 0 पर सेट होता है) सकारात्मक संख्या और ऋणात्मक संख्या के लिए 1), और शेष बिट्स के लिए संख्या का परिमाण (या निरपेक्ष मान)। उदाहरण के लिए, आठ-बिट [[बाइट]] में, केवल सात बिट परिमाण का प्रतिनिधित्व करते हैं, जो 0000000 (0) से 1111111 (127) तक हो सकते हैं। इस प्रकार -127 से लेकर संख्याएँ<sub>10</sub> से +127 तक<sub>10</sub> साइन बिट (आठवां बिट) जोड़ने के बाद इसे दर्शाया जा सकता है। उदाहरण के लिए, −43<sub>10</sub> आठ-बिट बाइट में एन्कोड किया गया 10101011 है जबकि 43<sub>10</sub> 00101011 है। संकेत-परिमाण प्रतिनिधित्व का उपयोग करने के कई परिणाम होते हैं जो उन्हें लागू करने के लिए और अधिक जटिल बनाते हैं:<ref name="cs315">{{cite web |last1=Bacon |first1=Jason W. |url=http://www.cs.uwm.edu/classes/cs315/Bacon/Lecture/HTML/ch04s11.html |title=Computer Science 315 Lecture Notes |access-date=21 February 2020 |date=2010–2011}}</ref> | ||
# शून्य को दर्शाने के दो तरीके हैं, 00000000 (0) और 10000000 (−0). | # शून्य को दर्शाने के दो तरीके हैं, 00000000 (0) और 10000000 (−0). | ||
# जोड़ और घटाव के लिए साइन बिट के आधार पर अलग-अलग व्यवहार की आवश्यकता होती है, जबकि | # जोड़ और घटाव के लिए साइन बिट के आधार पर अलग-अलग व्यवहार की आवश्यकता होती है, जबकि का पूरक साइन बिट को अनदेखा कर सकता है और केवल एंड-अराउंड कैरी कर सकता है, और दो का पूरक साइन बिट को अनदेखा कर सकता है और अतिप्रवाह व्यवहार पर निर्भर कर सकता है। | ||
# तुलना के लिए साइन बिट का निरीक्षण करना भी आवश्यक है, जबकि दो के पूरक में, कोई आसानी से दो संख्याओं को घटा सकता है, और जांच सकता है कि परिणाम सकारात्मक है या नकारात्मक। | # तुलना के लिए साइन बिट का निरीक्षण करना भी आवश्यक है, जबकि दो के पूरक में, कोई आसानी से दो संख्याओं को घटा सकता है, और जांच सकता है कि परिणाम सकारात्मक है या नकारात्मक। | ||
# दो के पूरक के मामले में न्यूनतम ऋणात्मक संख्या -128 के बजाय -127 है। | # दो के पूरक के मामले में न्यूनतम ऋणात्मक संख्या -128 के बजाय -127 है। | ||
Line 64: | Line 63: | ||
यह दृष्टिकोण किसी चिह्न को दिखाने के सामान्य तरीके (संख्या के परिमाण के आगे + या − लगाने) से सीधे तुलनीय है। कुछ प्रारंभिक बाइनरी कंप्यूटर (उदाहरण के लिए, आईबीएम 7090) इस प्रतिनिधित्व का उपयोग करते हैं, शायद सामान्य उपयोग के साथ इसके प्राकृतिक संबंध के कारण। [[फ़्लोटिंग-पॉइंट अंकगणित]] | फ़्लोटिंग-पॉइंट मानों में [[महत्व]] का प्रतिनिधित्व करने का संकेत-परिमाण सबसे आम तरीका है। | यह दृष्टिकोण किसी चिह्न को दिखाने के सामान्य तरीके (संख्या के परिमाण के आगे + या − लगाने) से सीधे तुलनीय है। कुछ प्रारंभिक बाइनरी कंप्यूटर (उदाहरण के लिए, आईबीएम 7090) इस प्रतिनिधित्व का उपयोग करते हैं, शायद सामान्य उपयोग के साथ इसके प्राकृतिक संबंध के कारण। [[फ़्लोटिंग-पॉइंट अंकगणित]] | फ़्लोटिंग-पॉइंट मानों में [[महत्व]] का प्रतिनिधित्व करने का संकेत-परिमाण सबसे आम तरीका है। | ||
== | ==का पूरक== | ||
{{Main|Ones' complement}} | {{Main|Ones' complement}} | ||
Line 100: | Line 99: | ||
| 11111111 || −0 || 255 | | 11111111 || −0 || 255 | ||
|} | |} | ||
लोगों के पूरक प्रतिनिधित्व में,<ref>{{Cite patent|title=ऐरे मल्टीप्लायर किसी के पूरक प्रारूप में काम कर रहा है|gdate=1981-03-10|country=US|number=4484301|url=https://patents.google.com/patent/US4484301A/en}}</ref> | लोगों के पूरक प्रतिनिधित्व में,<ref>{{Cite patent|title=ऐरे मल्टीप्लायर किसी के पूरक प्रारूप में काम कर रहा है|gdate=1981-03-10|country=US|number=4484301|url=https://patents.google.com/patent/US4484301A/en}}</ref> ऋणात्मक संख्या को सकारात्मक संख्या के बिटवाइज़ NOT (अर्थात पूरक) के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है। चिह्न-परिमाण प्रतिनिधित्व की तरह, किसी के पूरक में 0: 00000000 (+0) और 11111111 (−0) के दो प्रतिनिधित्व होते हैं।<ref>{{Cite patent|title=एक का पूरक क्रिप्टोग्राफ़िक कॉम्बिनर|gdate=1999-12-11|country=US|number=6760440|url=https://patents.google.com/patent/US6760440B1/en}}</ref> | ||
उदाहरण के तौर पर, 00101011 (43) का पूरक प्रपत्र<sub>10</sub>) 11010100 (−43) हो जाता है<sub>10</sub>). किसी के पूरक का उपयोग करके [[हस्ताक्षर]]ित संख्याओं की सीमा का प्रतिनिधित्व किया जाता है {{nobr|−(2<sup>''N''−1</sup> − 1)}} को {{nobr|(2<sup>''N''−1</sup> − 1)}} और ±0. | उदाहरण के तौर पर, 00101011 (43) का पूरक प्रपत्र<sub>10</sub>) 11010100 (−43) हो जाता है<sub>10</sub>). किसी के पूरक का उपयोग करके [[हस्ताक्षर]]ित संख्याओं की सीमा का प्रतिनिधित्व किया जाता है {{nobr|−(2<sup>''N''−1</sup> − 1)}} को {{nobr|(2<sup>''N''−1</sup> − 1)}} और ±0. पारंपरिक आठ-बिट बाइट -127 है<sub>10</sub> से +127 तक<sub>10</sub> शून्य के साथ या तो 00000000 (+0) या 11111111 (−0) है। | ||
इस प्रणाली में प्रदर्शित दो संख्याओं को जोड़ने के लिए, | इस प्रणाली में प्रदर्शित दो संख्याओं को जोड़ने के लिए, पारंपरिक बाइनरी जोड़ किया जाता है, लेकिन फिर एंड-अराउंड कैरी करना आवश्यक होता है: यानी, किसी भी परिणामी [[झंडा ले जाना]] को परिणामी योग में वापस जोड़ें।<ref>{{cite journal |last1=Shedletsky |first1=John J. |title=एंड-अराउंड-कैरी एडर के अनुक्रमिक और अनिश्चित व्यवहार पर टिप्पणी करें|journal=IEEE Transactions on Computers |date=1977 |volume=26 |issue=3 |pages=271–272 |doi=10.1109/TC.1977.1674817|s2cid=14661474 |url=https://www.semanticscholar.org/paper/Comment-on-the-Sequential-and-Indeterminate-of-an-Shedletsky/17d4d66d80113d1bdcffd6dd08695fe1b8a52342?p2df }}</ref> यह देखने के लिए कि यह क्यों आवश्यक है, निम्नलिखित उदाहरण पर विचार करें जिसमें −1 (1111110) को +2 (00000010) में जोड़ने का मामला दिखाया गया है: | ||
<पूर्व> | <पूर्व> | ||
द्विआधारी दशमलव | |||
11111110 −1 | |||
+ 00000010 +2 | + 00000010 +2 | ||
─────────── ── | ─────────── ── | ||
1 00000000 0 ← सही उत्तर नहीं है | 1 00000000 0 ← सही उत्तर नहीं है | ||
1 +1 ← कैरी जोड़ें | |||
─────────── ── | ─────────── ── | ||
0000001 1 ← सही उत्तर | |||
</पूर्व> | </पूर्व> | ||
पिछले उदाहरण में, पहला बाइनरी जोड़ 00000000 देता है, जो गलत है। सही परिणाम (0000001) तभी दिखाई देता है जब कैरी को वापस जोड़ा जाता है। | पिछले उदाहरण में, पहला बाइनरी जोड़ 00000000 देता है, जो गलत है। सही परिणाम (0000001) तभी दिखाई देता है जब कैरी को वापस जोड़ा जाता है। | ||
शब्दावली पर | शब्दावली पर टिप्पणी: सिस्टम को लोगों के पूरक के रूप में संदर्भित किया जाता है क्योंकि सकारात्मक मान <var>x</var> का नेगेशन#प्रोग्रामिंग (<var>x</var> के बिटवाइज़ NOT के रूप में दर्शाया गया है) भी हो सकता है शून्य के इकाइयों के पूरक प्रतिनिधित्व से <var>x</var> को घटाकर गठित किया गया है जो इकाइयों (−0) का लंबा अनुक्रम है। दूसरी ओर, दो का पूरक अंकगणित, दो की बड़ी घात से <var>x</var> को घटाकर <var>x</var> का निषेधन बनाता है, जो +0 से सर्वांगसमता संबंध है।<ref>Donald Knuth: ''[[The Art of Computer Programming]]'', Volume 2: Seminumerical Algorithms, chapter 4.1</ref> इसलिए, ही नकारात्मक मान के के पूरक और दो के पूरक निरूपण में का अंतर होगा। | ||
ध्यान दें कि किसी ऋणात्मक संख्या का पूरक प्रतिनिधित्व चिह्न-परिमाण प्रतिनिधित्व से केवल बिटवाइज़ परिमाण को पूरक करके (पहले के बाद सभी बिट्स को उलटा करके) प्राप्त किया जा सकता है। उदाहरण के लिए, दशमलव संख्या −125 अपने चिह्न-परिमाण प्रतिनिधित्व 111111101 के साथ किसी के पूरक रूप में 10000010 के रूप में दर्शाया जा सकता है। | ध्यान दें कि किसी ऋणात्मक संख्या का पूरक प्रतिनिधित्व चिह्न-परिमाण प्रतिनिधित्व से केवल बिटवाइज़ परिमाण को पूरक करके (पहले के बाद सभी बिट्स को उलटा करके) प्राप्त किया जा सकता है। उदाहरण के लिए, दशमलव संख्या −125 अपने चिह्न-परिमाण प्रतिनिधित्व 111111101 के साथ किसी के पूरक रूप में 10000010 के रूप में दर्शाया जा सकता है। | ||
Line 154: | Line 153: | ||
| 11111111 || −1 || 255 | | 11111111 || −1 || 255 | ||
|} | |} | ||
दोनों के पूरक प्रतिनिधित्व में, | दोनों के पूरक प्रतिनिधित्व में, नकारात्मक संख्या को सकारात्मक संख्या प्लस वन के बिटवाइज़ NOT (यानी पूरक) के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है, अर्थात लोगों के पूरक प्लस वन के लिए। यह 0 के एकाधिक अभ्यावेदन की समस्याओं और उनके पूरक निरूपण को अंत तक ले जाने की आवश्यकता को दूर करता है। इसे अहस्ताक्षरित पूर्णांक में इसके मान के व्युत्क्रम का प्रतिनिधित्व करने वाला सबसे महत्वपूर्ण बिट भी माना जा सकता है; 8-बिट अहस्ताक्षरित बाइट में, सबसे महत्वपूर्ण बिट 128वें स्थान का प्रतिनिधित्व करता है, जहां दो के पूरक में वह बिट -128 का प्रतिनिधित्व करेगा। | ||
दो-पूरक में, केवल | दो-पूरक में, केवल शून्य होता है, जिसे 00000000 के रूप में दर्शाया जाता है। किसी संख्या (चाहे नकारात्मक या सकारात्मक) को नकारना सभी बिट्स को उल्टा करके और फिर उस परिणाम में जोड़कर किया जाता है।<ref>{{cite web|title=दो का अनुपूरण|url=http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html|publisher=[[Cornell University]]|date=April 2000|author=Thomas Finley|access-date=15 September 2015}}</ref> यह वास्तव में सभी पूर्णांकों पर रिंग (गणित) संरचना को दर्शाता है दो|2 की [[मॉड्यूलर अंकगणित]]ीय शक्ति<sup>एन</sup>: <math>\mathbb{Z}/2^N\mathbb{Z}</math>. दो-पूरक पूर्णांकों की जोड़ी को जोड़ना हस्ताक्षर की जोड़ी को जोड़ने के समान है ([[पूर्णांक अतिप्रवाह]] का पता लगाने के अलावा, यदि ऐसा किया जाता है); यही बात घटाव के लिए भी सच है और यहां तक कि किसी उत्पाद के एन न्यूनतम महत्वपूर्ण बिट्स (गुणन का मूल्य) के लिए भी सच है। उदाहरण के लिए, 127 और −128 का दो-पूरक जोड़ 127 और 128 के अहस्ताक्षरित जोड़ के समान बाइनरी बिट पैटर्न देता है, जैसा कि 8-बिट दो की पूरक तालिका से देखा जा सकता है। | ||
दो के पूरक में किसी संख्या का निषेधन प्राप्त करने की | दो के पूरक में किसी संख्या का निषेधन प्राप्त करने की आसान विधि इस प्रकार है: | ||
{|class="wikitable" | {|class="wikitable" | ||
Line 176: | Line 175: | ||
# संख्या के माध्यम से सभी बिट्स को उलटा करें | # संख्या के माध्यम से सभी बिट्स को उलटा करें | ||
# | # जोड़ें | ||
उदाहरण: +2 के लिए, जो बाइनरी में 00000010 है (~ वर्ण C (प्रोग्रामिंग भाषा) बिटवाइज़ ऑपरेटर नहीं है, इसलिए ~X का अर्थ है X में सभी बिट्स को उल्टा करना): | उदाहरण: +2 के लिए, जो बाइनरी में 00000010 है (~ वर्ण C (प्रोग्रामिंग भाषा) बिटवाइज़ ऑपरेटर नहीं है, इसलिए ~X का अर्थ है X में सभी बिट्स को उल्टा करना): | ||
Line 183: | Line 182: | ||
# 11111101 + 1 → 11111110 (दो के पूरक में −2) | # 11111101 + 1 → 11111110 (दो के पूरक में −2) | ||
== ऑफ़सेट बाइनरी == | |||
== | |||
{{Main|Offset binary}} | {{Main|Offset binary}} | ||
Line 212: | Line 209: | ||
|- | |- | ||
|} | |} | ||
ऑफसेट बाइनरी प्रतिनिधित्व में, जिसे अतिरिक्त-<var>K</var> या पक्षपाती भी कहा जाता है, | ऑफसेट बाइनरी प्रतिनिधित्व में, जिसे अतिरिक्त-<var>K</var> या पक्षपाती भी कहा जाता है, हस्ताक्षरित संख्या को अहस्ताक्षरित संख्या प्लस <var>K</var> के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है, <var>K के साथ</var> पक्षपातपूर्ण मूल्य या ऑफसेट होना। इस प्रकार 0 को <var>K</var> द्वारा दर्शाया जाता है, और −<var>K</var> को पूर्ण-शून्य बिट पैटर्न द्वारा दर्शाया जाता है। इसे उपरोक्त दो-पूरक के मामूली संशोधन और सामान्यीकरण के रूप में देखा जा सकता है, जो वस्तुतः है {{nobr|excess-(2<sup><var>N</var>−1</sup>)}} अस्वीकृत सबसे महत्वपूर्ण बिट के साथ प्रतिनिधित्व। | ||
पक्षपातपूर्ण निरूपण अब मुख्य रूप से [[तैरनेवाला स्थल]] संख्याओं के प्रतिपादक के लिए उपयोग किया जाता है। [[IEEE 754]]|IEEE 754 फ़्लोटिंग-पॉइंट मानक एकल-सटीक (32-बिट) संख्या के घातांक फ़ील्ड को 8-बिट अतिरिक्त-127 फ़ील्ड के रूप में परिभाषित करता है। [[एकल परिशुद्धता]] (64-बिट) एक्सपोनेंट फ़ील्ड 11-बिट [[अतिरिक्त-1023]] फ़ील्ड है; प्रतिपादक पूर्वाग्रह देखें. इसका उपयोग बाइनरी-कोडित दशमलव संख्याओं के लिए अतिरिक्त-3 के रूप में भी किया जाता था। | पक्षपातपूर्ण निरूपण अब मुख्य रूप से [[तैरनेवाला स्थल]] संख्याओं के प्रतिपादक के लिए उपयोग किया जाता है। [[IEEE 754]]|IEEE 754 फ़्लोटिंग-पॉइंट मानक एकल-सटीक (32-बिट) संख्या के घातांक फ़ील्ड को 8-बिट अतिरिक्त-127 फ़ील्ड के रूप में परिभाषित करता है। [[एकल परिशुद्धता]] (64-बिट) एक्सपोनेंट फ़ील्ड 11-बिट [[अतिरिक्त-1023]] फ़ील्ड है; प्रतिपादक पूर्वाग्रह देखें. इसका उपयोग बाइनरी-कोडित दशमलव संख्याओं के लिए अतिरिक्त-3 के रूप में भी किया जाता था। | ||
Line 243: | Line 240: | ||
|- | |- | ||
|} | |} | ||
आधार -2 प्रतिनिधित्व में, | आधार -2 प्रतिनिधित्व में, हस्ताक्षरित संख्या को आधार -2 के साथ संख्या प्रणाली का उपयोग करके दर्शाया जाता है। पारंपरिक बाइनरी संख्या प्रणालियों में, आधार, या [[मूलांक]], 2 है; इस प्रकार सबसे दाहिना बिट 2 का प्रतिनिधित्व करता है<sup>0</sup>, अगला बिट 2 का प्रतिनिधित्व करता है<sup>1</sup>, अगला बिट 2<sup>2</sup>, इत्यादि. हालाँकि, आधार -2 के साथ द्विआधारी संख्या प्रणाली भी संभव है। सबसे दाहिना बिट प्रतिनिधित्व करता है {{nowrap|(−2)<sup>0</sup> {{=}} +1}}, अगला बिट दर्शाता है {{nowrap|(−2)<sup>1</sup> {{=}} −2}}, अगला बिट {{nowrap|(−2)<sup>2</sup> {{=}} +4}} और इसी तरह, वैकल्पिक संकेत के साथ। जिन संख्याओं को चार बिट्स के साथ दर्शाया जा सकता है, उन्हें नीचे तुलना तालिका में दिखाया गया है। | ||
प्रदर्शित की जा सकने वाली संख्याओं की सीमा असममित है। यदि शब्द में बिट्स की संख्या सम है, तो प्रदर्शित की जा सकने वाली सबसे बड़ी ऋणात्मक संख्या का परिमाण, प्रदर्शित की जा सकने वाली सबसे बड़ी धनात्मक संख्या से दोगुना बड़ा होता है, और यदि शब्द में विषम संख्या में बिट्स हों तो इसके विपरीत। | प्रदर्शित की जा सकने वाली संख्याओं की सीमा असममित है। यदि शब्द में बिट्स की संख्या सम है, तो प्रदर्शित की जा सकने वाली सबसे बड़ी ऋणात्मक संख्या का परिमाण, प्रदर्शित की जा सकने वाली सबसे बड़ी धनात्मक संख्या से दोगुना बड़ा होता है, और यदि शब्द में विषम संख्या में बिट्स हों तो इसके विपरीत। | ||
Line 532: | Line 529: | ||
== अन्य प्रणालियाँ == | == अन्य प्रणालियाँ == | ||
Google का [[प्रोटोकॉल बफ़र्स]] ज़िग-ज़ैग एन्कोडिंग संकेत-परिमाण के समान | Google का [[प्रोटोकॉल बफ़र्स]] ज़िग-ज़ैग एन्कोडिंग संकेत-परिमाण के समान प्रणाली है, लेकिन संकेत का प्रतिनिधित्व करने के लिए [[कम से कम महत्वपूर्ण बिट]] का उपयोग करता है और इसमें शून्य का एकल प्रतिनिधित्व होता है। यह गैर-नकारात्मक (अहस्ताक्षरित) पूर्णांकों के लिए इच्छित चर-लंबाई मात्रा एन्कोडिंग को हस्ताक्षरित पूर्णांकों के लिए कुशलतापूर्वक उपयोग करने की अनुमति देता है।<ref>[http://developers.google.com/protocol-buffers/docs/encoding#types Protocol Buffers: Signed Integers]</ref> | ||
उन्नत वीडियो कोडिंग में | उन्नत वीडियो कोडिंग में समान विधि का उपयोग किया जाता है|उन्नत वीडियो कोडिंग/एच.264 और उच्च दक्षता वीडियो कोडिंग|उच्च दक्षता वीडियो कोडिंग/एच.265 वीडियो संपीड़न मानकों को एक्सपोनेंशियल-गोलोम्ब कोडिंग#नकारात्मक संख्याओं तक विस्तार|एक्सपेंडेंशियल-गोलोम्ब का विस्तार करें ऋणात्मक संख्याओं को कोडिंग करना। उस विस्तार में, सबसे कम महत्वपूर्ण बिट लगभग साइन बिट है; शून्य में सभी नकारात्मक संख्याओं के समान न्यूनतम महत्वपूर्ण बिट (0) होता है। इस विकल्प के परिणामस्वरूप सबसे बड़ी परिमाण प्रतिनिधित्व योग्य सकारात्मक संख्या सबसे बड़ी परिमाण नकारात्मक संख्या से अधिक होती है, दो के पूरक या प्रोटोकॉल बफ़र्स ज़िग-ज़ैग एन्कोडिंग के विपरीत। | ||
अन्य दृष्टिकोण यह है कि प्रत्येक [[संख्यात्मक अंक]] को चिह्न दिया जाए, जिससे हस्ताक्षरित अंक का प्रतिनिधित्व प्राप्त हो। उदाहरण के लिए, 1726 में, [[जॉन कोल्सन]] ने छोटी संख्याओं, अंकों 1, 2, 3, 4 और 5 तक अभिव्यक्तियों को कम करने की वकालत की। 1840 में, [[ऑगस्टिन कॉची]] ने भी गणना में त्रुटियों को कम करने के लिए ऐसी संशोधित दशमलव संख्याओं को प्राथमिकता दी। | |||
== यह भी देखें == | == यह भी देखें == |
Revision as of 11:21, 9 August 2023
कम्प्यूटिंग में, बाइनरी नंबर सिस्टम में नकारात्मक संख्याओं को एन्कोड करने के लिए हस्ताक्षरित संख्या प्रतिनिधित्व की आवश्यकता होती है।
गणित में, किसी भी आधार में ऋणात्मक संख्याओं को उपसर्ग में ऋण चिह्न (-) लगाकर दर्शाया जाता है। हालाँकि, रैम या सीपीयू प्रोसेसर रजिस्टर में, संख्याओं को अतिरिक्त प्रतीकों के बिना, केवल अंश ्स के अनुक्रम के रूप में दर्शाया जाता है। हस्ताक्षरित संख्याओं को दर्शाने के लिए द्विआधारी अंक प्रणाली का विस्तार करने की चार सबसे प्रसिद्ध विधियाँ हैं: #चिह्न-परिमाण|चिह्न-परिमाण, # का पूरक| का पूरक, #दो का पूरक|दो का पूरक, और #अतिरिक्त-के। कुछ वैकल्पिक विधियाँ #Base −2|base −2 का उपयोग करते हुए स्पष्ट संकेतों के बजाय अंतर्निहित संकेतों का उपयोग करती हैं, जैसे नकारात्मक बाइनरी। स्थितीय संकेतन के लिए संगत तरीके तैयार किए जा सकते हैं, चाहे सकारात्मक, नकारात्मक, भिन्नात्मक, या ऐसे विषयों पर अन्य विस्तार।
ऐसा कोई निश्चित मानदंड नहीं है जिसके आधार पर कोई भी प्रतिनिधित्व सार्वभौमिक रूप से श्रेष्ठ हो। पूर्णांकों के लिए, अधिकांश वर्तमान कंप्यूटिंग उपकरणों में उपयोग किया जाने वाला प्रतिनिधित्व दो का पूरक है, हालांकि UNIVAC 1100/2200 श्रृंखला मेनफ्रेम के पूरक का उपयोग करते हैं।
इतिहास
डिजिटल कंप्यूटिंग के शुरुआती दिनों को हार्डवेयर प्रौद्योगिकी और गणित प्रौद्योगिकी (नंबरिंग सिस्टम) दोनों के बारे में प्रतिस्पर्धी विचारों द्वारा चिह्नित किया गया था। बड़ी बहसों में से नकारात्मक संख्याओं का प्रारूप था, जिसमें उस युग के कुछ शीर्ष विशेषज्ञों ने बहुत मजबूत और भिन्न राय व्यक्त की थी। खेमे ने दो के पूरक, उस व्यवस्था का समर्थन किया जो आज प्रबल है। अन्य शिविर ने लोगों के पूरक का समर्थन किया, जहां सभी बिट्स को उसके सकारात्मक समकक्ष में उलटा करके नकारात्मक मान बनाया जाता है। तीसरे समूह ने संकेत-परिमाण का समर्थन किया, जहां शब्द के उच्चतम-क्रम बिट को टॉगल करके मान को सकारात्मक से नकारात्मक में बदल दिया जाता है।
प्रत्येक प्रणाली के पक्ष और विपक्ष में तर्क थे। मेमोरी डंप (1960 के दशक में सामान्य प्रक्रिया) का आसान पता लगाने के लिए साइन-मैग्नीट्यूड की अनुमति दी गई है क्योंकि छोटे संख्यात्मक मान कम 1 बिट का उपयोग करते हैं। ये प्रणालियाँ लोगों को आंतरिक रूप से गणित का पूरक बनाती हैं, इसलिए जब संख्याओं को रजिस्टर से गणित इकाई में प्रेषित किया जाता है तो उन्हें लोगों के पूरक मूल्यों में परिवर्तित करना होगा और फिर जब परिणाम वापस रजिस्टर में प्रेषित किया जाता है तो उन्हें वापस संकेत-परिमाण में परिवर्तित करना होगा।. इलेक्ट्रॉनिक्स को अन्य प्रणालियों की तुलना में अधिक गेटों की आवश्यकता होती है – प्रमुख चिंता का विषय तब था जब अलग-अलग ट्रांजिस्टर की लागत और पैकेजिंग महत्वपूर्ण थी। आईबीएम साइन-मैग्नीट्यूड के शुरुआती समर्थकों में से था, उनके आईबीएम 704, आईबीएम 709 और आईबीएम 7090 श्रृंखला के कंप्यूटर शायद इसका उपयोग करने के लिए सबसे प्रसिद्ध सिस्टम थे।
वन्स के पूरक ने कुछ हद तक सरल हार्डवेयर डिज़ाइन की अनुमति दी, क्योंकि गणित इकाई में और उससे पास होने पर मूल्यों को परिवर्तित करने की कोई आवश्यकता नहीं थी। लेकिन इसने संकेत-परिमाण के साथ अवांछनीय विशेषता भी साझा की: नकारात्मक शून्य (−0) का प्रतिनिधित्व करने की क्षमता। नकारात्मक शून्य बिल्कुल सकारात्मक शून्य की तरह व्यवहार करता है: जब किसी भी गणना में ऑपरेंड के रूप में उपयोग किया जाता है, तो परिणाम वही होगा चाहे ऑपरेंड सकारात्मक या नकारात्मक शून्य हो। नुकसान यह है कि शून्य के साथ समानता की जाँच करते समय समान मूल्य के दो रूपों के अस्तित्व के लिए दो तुलनाओं की आवश्यकता होती है। किसी के पूरक घटाव का परिणाम अंततः उधार (नीचे वर्णित) भी हो सकता है। यह तर्क दिया जा सकता है कि यह जोड़ और घटाव तर्क को अधिक जटिल बनाता है या यह इसे सरल बनाता है, क्योंकि घटाव के लिए बस दूसरे ऑपरेंड के बिट्स को उल्टा करने की आवश्यकता होती है क्योंकि यह योजक को पास किया जाता है। PDP-1, CDC 160 श्रृंखला, CDC 3000 श्रृंखला, CDC 6000 श्रृंखला, UNIVAC 1100 श्रृंखला, और LINC कंप्यूटर पूरक प्रतिनिधित्व का उपयोग करते हैं।
टू का पूरक हार्डवेयर में लागू करना सबसे आसान है, जो इसकी व्यापक लोकप्रियता का अंतिम कारण हो सकता है।[1] प्रारंभिक मेनफ्रेम पर प्रोसेसर में अक्सर हजारों ट्रांजिस्टर शामिल होते थे, इसलिए महत्वपूर्ण संख्या में ट्रांजिस्टर को खत्म करना महत्वपूर्ण लागत बचत थी। मेनफ्रेम जैसे आईबीएम सिस्टम/360, जीई-600 श्रृंखला,[2] और पीडीपी-6 और पीडीपी-10 दो पूरक का उपयोग करते हैं, जैसे कि पीडीपी-5 और पीडीपी-8 और पीडीपी-11 और वैक्स मशीनें जैसे मिनी कंप्यूटर। प्रारंभिक एकीकृत-सर्किट-आधारित सीपीयू (इंटेल 8080, आदि) के वास्तुकारों ने भी दो के पूरक गणित का उपयोग करना चुना। जैसे-जैसे आईसी तकनीक उन्नत हुई, x86 सहित लगभग सभी प्रोसेसरों में टू की पूरक तकनीक को अपनाया गया,[3] एम68के, पावर आईएसए,[4] एमआईपीएस वास्तुकला, स्पार्क, एआरएम वास्तुकला, इटेनियम, पीए-जोखिम, और डीईसी अल्फा।
चिह्न-परिमाण
Binary value | Sign–magnitude interpretation | Unsigned interpretation |
---|---|---|
00000000 | 0 | 0 |
00000001 | 1 | 1 |
⋮ | ⋮ | ⋮ |
01111101 | 125 | 125 |
01111110 | 126 | 126 |
01111111 | 127 | 127 |
10000000 | −0 | 128 |
10000001 | −1 | 129 |
10000010 | −2 | 130 |
⋮ | ⋮ | ⋮ |
11111101 | −125 | 253 |
11111110 | −126 | 254 |
11111111 | −127 | 255 |
साइन-परिमाण प्रतिनिधित्व में, जिसे साइन-एंड-मैग्नीट्यूड या हस्ताक्षरित परिमाण भी कहा जाता है, हस्ताक्षरित संख्या को साइन बिट के लिए संख्या के संकेत के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है (अक्सर सबसे महत्वपूर्ण बिट, ए के लिए 0 पर सेट होता है) सकारात्मक संख्या और ऋणात्मक संख्या के लिए 1), और शेष बिट्स के लिए संख्या का परिमाण (या निरपेक्ष मान)। उदाहरण के लिए, आठ-बिट बाइट में, केवल सात बिट परिमाण का प्रतिनिधित्व करते हैं, जो 0000000 (0) से 1111111 (127) तक हो सकते हैं। इस प्रकार -127 से लेकर संख्याएँ10 से +127 तक10 साइन बिट (आठवां बिट) जोड़ने के बाद इसे दर्शाया जा सकता है। उदाहरण के लिए, −4310 आठ-बिट बाइट में एन्कोड किया गया 10101011 है जबकि 4310 00101011 है। संकेत-परिमाण प्रतिनिधित्व का उपयोग करने के कई परिणाम होते हैं जो उन्हें लागू करने के लिए और अधिक जटिल बनाते हैं:[5]
- शून्य को दर्शाने के दो तरीके हैं, 00000000 (0) और 10000000 (−0).
- जोड़ और घटाव के लिए साइन बिट के आधार पर अलग-अलग व्यवहार की आवश्यकता होती है, जबकि का पूरक साइन बिट को अनदेखा कर सकता है और केवल एंड-अराउंड कैरी कर सकता है, और दो का पूरक साइन बिट को अनदेखा कर सकता है और अतिप्रवाह व्यवहार पर निर्भर कर सकता है।
- तुलना के लिए साइन बिट का निरीक्षण करना भी आवश्यक है, जबकि दो के पूरक में, कोई आसानी से दो संख्याओं को घटा सकता है, और जांच सकता है कि परिणाम सकारात्मक है या नकारात्मक।
- दो के पूरक के मामले में न्यूनतम ऋणात्मक संख्या -128 के बजाय -127 है।
यह दृष्टिकोण किसी चिह्न को दिखाने के सामान्य तरीके (संख्या के परिमाण के आगे + या − लगाने) से सीधे तुलनीय है। कुछ प्रारंभिक बाइनरी कंप्यूटर (उदाहरण के लिए, आईबीएम 7090) इस प्रतिनिधित्व का उपयोग करते हैं, शायद सामान्य उपयोग के साथ इसके प्राकृतिक संबंध के कारण। फ़्लोटिंग-पॉइंट अंकगणित | फ़्लोटिंग-पॉइंट मानों में महत्व का प्रतिनिधित्व करने का संकेत-परिमाण सबसे आम तरीका है।
का पूरक
Binary value | Ones' complement interpretation | Unsigned interpretation |
---|---|---|
00000000 | 0 | 0 |
00000001 | 1 | 1 |
⋮ | ⋮ | ⋮ |
01111101 | 125 | 125 |
01111110 | 126 | 126 |
01111111 | 127 | 127 |
10000000 | −127 | 128 |
10000001 | −126 | 129 |
10000010 | −125 | 130 |
⋮ | ⋮ | ⋮ |
11111101 | −2 | 253 |
11111110 | −1 | 254 |
11111111 | −0 | 255 |
लोगों के पूरक प्रतिनिधित्व में,[6] ऋणात्मक संख्या को सकारात्मक संख्या के बिटवाइज़ NOT (अर्थात पूरक) के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है। चिह्न-परिमाण प्रतिनिधित्व की तरह, किसी के पूरक में 0: 00000000 (+0) और 11111111 (−0) के दो प्रतिनिधित्व होते हैं।[7] उदाहरण के तौर पर, 00101011 (43) का पूरक प्रपत्र10) 11010100 (−43) हो जाता है10). किसी के पूरक का उपयोग करके हस्ताक्षरित संख्याओं की सीमा का प्रतिनिधित्व किया जाता है −(2N−1 − 1) को (2N−1 − 1) और ±0. पारंपरिक आठ-बिट बाइट -127 है10 से +127 तक10 शून्य के साथ या तो 00000000 (+0) या 11111111 (−0) है।
इस प्रणाली में प्रदर्शित दो संख्याओं को जोड़ने के लिए, पारंपरिक बाइनरी जोड़ किया जाता है, लेकिन फिर एंड-अराउंड कैरी करना आवश्यक होता है: यानी, किसी भी परिणामी झंडा ले जाना को परिणामी योग में वापस जोड़ें।[8] यह देखने के लिए कि यह क्यों आवश्यक है, निम्नलिखित उदाहरण पर विचार करें जिसमें −1 (1111110) को +2 (00000010) में जोड़ने का मामला दिखाया गया है:
<पूर्व>
द्विआधारी दशमलव 11111110 −1
+ 00000010 +2 ─────────── ──
1 00000000 0 ← सही उत्तर नहीं है 1 +1 ← कैरी जोड़ें
─────────── ──
0000001 1 ← सही उत्तर
</पूर्व>
पिछले उदाहरण में, पहला बाइनरी जोड़ 00000000 देता है, जो गलत है। सही परिणाम (0000001) तभी दिखाई देता है जब कैरी को वापस जोड़ा जाता है।
शब्दावली पर टिप्पणी: सिस्टम को लोगों के पूरक के रूप में संदर्भित किया जाता है क्योंकि सकारात्मक मान x का नेगेशन#प्रोग्रामिंग (x के बिटवाइज़ NOT के रूप में दर्शाया गया है) भी हो सकता है शून्य के इकाइयों के पूरक प्रतिनिधित्व से x को घटाकर गठित किया गया है जो इकाइयों (−0) का लंबा अनुक्रम है। दूसरी ओर, दो का पूरक अंकगणित, दो की बड़ी घात से x को घटाकर x का निषेधन बनाता है, जो +0 से सर्वांगसमता संबंध है।[9] इसलिए, ही नकारात्मक मान के के पूरक और दो के पूरक निरूपण में का अंतर होगा।
ध्यान दें कि किसी ऋणात्मक संख्या का पूरक प्रतिनिधित्व चिह्न-परिमाण प्रतिनिधित्व से केवल बिटवाइज़ परिमाण को पूरक करके (पहले के बाद सभी बिट्स को उलटा करके) प्राप्त किया जा सकता है। उदाहरण के लिए, दशमलव संख्या −125 अपने चिह्न-परिमाण प्रतिनिधित्व 111111101 के साथ किसी के पूरक रूप में 10000010 के रूप में दर्शाया जा सकता है।
दो का पूरक
Binary value | Two's complement interpretation | Unsigned interpretation |
---|---|---|
00000000 | 0 | 0 |
00000001 | 1 | 1 |
⋮ | ⋮ | ⋮ |
01111110 | 126 | 126 |
01111111 | 127 | 127 |
10000000 | −128 | 128 |
10000001 | −127 | 129 |
10000010 | −126 | 130 |
⋮ | ⋮ | ⋮ |
11111110 | −2 | 254 |
11111111 | −1 | 255 |
दोनों के पूरक प्रतिनिधित्व में, नकारात्मक संख्या को सकारात्मक संख्या प्लस वन के बिटवाइज़ NOT (यानी पूरक) के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है, अर्थात लोगों के पूरक प्लस वन के लिए। यह 0 के एकाधिक अभ्यावेदन की समस्याओं और उनके पूरक निरूपण को अंत तक ले जाने की आवश्यकता को दूर करता है। इसे अहस्ताक्षरित पूर्णांक में इसके मान के व्युत्क्रम का प्रतिनिधित्व करने वाला सबसे महत्वपूर्ण बिट भी माना जा सकता है; 8-बिट अहस्ताक्षरित बाइट में, सबसे महत्वपूर्ण बिट 128वें स्थान का प्रतिनिधित्व करता है, जहां दो के पूरक में वह बिट -128 का प्रतिनिधित्व करेगा।
दो-पूरक में, केवल शून्य होता है, जिसे 00000000 के रूप में दर्शाया जाता है। किसी संख्या (चाहे नकारात्मक या सकारात्मक) को नकारना सभी बिट्स को उल्टा करके और फिर उस परिणाम में जोड़कर किया जाता है।[10] यह वास्तव में सभी पूर्णांकों पर रिंग (गणित) संरचना को दर्शाता है दो|2 की मॉड्यूलर अंकगणितीय शक्तिएन: . दो-पूरक पूर्णांकों की जोड़ी को जोड़ना हस्ताक्षर की जोड़ी को जोड़ने के समान है (पूर्णांक अतिप्रवाह का पता लगाने के अलावा, यदि ऐसा किया जाता है); यही बात घटाव के लिए भी सच है और यहां तक कि किसी उत्पाद के एन न्यूनतम महत्वपूर्ण बिट्स (गुणन का मूल्य) के लिए भी सच है। उदाहरण के लिए, 127 और −128 का दो-पूरक जोड़ 127 और 128 के अहस्ताक्षरित जोड़ के समान बाइनरी बिट पैटर्न देता है, जैसा कि 8-बिट दो की पूरक तालिका से देखा जा सकता है।
दो के पूरक में किसी संख्या का निषेधन प्राप्त करने की आसान विधि इस प्रकार है:
Example 1 | Example 2 | |
---|---|---|
1. Starting from the right, find the first "1" | 00101001 | 00101100 |
2. Invert all of the bits to the left of that "1" | 11010111 | 11010100 |
विधि दो:
- संख्या के माध्यम से सभी बिट्स को उलटा करें
- जोड़ें
उदाहरण: +2 के लिए, जो बाइनरी में 00000010 है (~ वर्ण C (प्रोग्रामिंग भाषा) बिटवाइज़ ऑपरेटर नहीं है, इसलिए ~X का अर्थ है X में सभी बिट्स को उल्टा करना):
- ~00000010 → 11111101
- 11111101 + 1 → 11111110 (दो के पूरक में −2)
ऑफ़सेट बाइनरी
Binary value | Excess-128 interpretation | Unsigned interpretation |
---|---|---|
00000000 | −128 | 0 |
00000001 | −127 | 1 |
⋮ | ⋮ | ⋮ |
01111111 | −1 | 127 |
10000000 | 0 | 128 |
10000001 | 1 | 129 |
⋮ | ⋮ | ⋮ |
11111111 | 127 | 255 |
ऑफसेट बाइनरी प्रतिनिधित्व में, जिसे अतिरिक्त-K या पक्षपाती भी कहा जाता है, हस्ताक्षरित संख्या को अहस्ताक्षरित संख्या प्लस K के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है, K के साथ पक्षपातपूर्ण मूल्य या ऑफसेट होना। इस प्रकार 0 को K द्वारा दर्शाया जाता है, और −K को पूर्ण-शून्य बिट पैटर्न द्वारा दर्शाया जाता है। इसे उपरोक्त दो-पूरक के मामूली संशोधन और सामान्यीकरण के रूप में देखा जा सकता है, जो वस्तुतः है excess-(2N−1) अस्वीकृत सबसे महत्वपूर्ण बिट के साथ प्रतिनिधित्व।
पक्षपातपूर्ण निरूपण अब मुख्य रूप से तैरनेवाला स्थल संख्याओं के प्रतिपादक के लिए उपयोग किया जाता है। IEEE 754|IEEE 754 फ़्लोटिंग-पॉइंट मानक एकल-सटीक (32-बिट) संख्या के घातांक फ़ील्ड को 8-बिट अतिरिक्त-127 फ़ील्ड के रूप में परिभाषित करता है। एकल परिशुद्धता (64-बिट) एक्सपोनेंट फ़ील्ड 11-बिट अतिरिक्त-1023 फ़ील्ड है; प्रतिपादक पूर्वाग्रह देखें. इसका उपयोग बाइनरी-कोडित दशमलव संख्याओं के लिए अतिरिक्त-3 के रूप में भी किया जाता था।
आधार −2
Binary value | Base −2 interpretation | Unsigned interpretation |
---|---|---|
00000000 | 0 | 0 |
00000001 | 1 | 1 |
⋮ | ⋮ | ⋮ |
01111111 | 43 | 127 |
10000000 | −128 | 128 |
10000001 | −127 | 129 |
⋮ | ⋮ | ⋮ |
11111111 | −85 | 255 |
आधार -2 प्रतिनिधित्व में, हस्ताक्षरित संख्या को आधार -2 के साथ संख्या प्रणाली का उपयोग करके दर्शाया जाता है। पारंपरिक बाइनरी संख्या प्रणालियों में, आधार, या मूलांक, 2 है; इस प्रकार सबसे दाहिना बिट 2 का प्रतिनिधित्व करता है0, अगला बिट 2 का प्रतिनिधित्व करता है1, अगला बिट 22, इत्यादि. हालाँकि, आधार -2 के साथ द्विआधारी संख्या प्रणाली भी संभव है। सबसे दाहिना बिट प्रतिनिधित्व करता है (−2)0 = +1, अगला बिट दर्शाता है (−2)1 = −2, अगला बिट (−2)2 = +4 और इसी तरह, वैकल्पिक संकेत के साथ। जिन संख्याओं को चार बिट्स के साथ दर्शाया जा सकता है, उन्हें नीचे तुलना तालिका में दिखाया गया है।
प्रदर्शित की जा सकने वाली संख्याओं की सीमा असममित है। यदि शब्द में बिट्स की संख्या सम है, तो प्रदर्शित की जा सकने वाली सबसे बड़ी ऋणात्मक संख्या का परिमाण, प्रदर्शित की जा सकने वाली सबसे बड़ी धनात्मक संख्या से दोगुना बड़ा होता है, और यदि शब्द में विषम संख्या में बिट्स हों तो इसके विपरीत।
तुलना तालिका
निम्न तालिका सकारात्मक और नकारात्मक पूर्णांक दिखाती है जिन्हें चार बिट्स का उपयोग करके दर्शाया जा सकता है।
Decimal | Unsigned | Sign–magnitude | Ones' complement | Two's complement | Excess-8 (biased) | Base −2 |
---|---|---|---|---|---|---|
16 | — | — | — | — | — | — |
15 | 1111 | — | — | — | — | — |
14 | 1110 | — | — | — | — | — |
13 | 1101 | — | — | — | — | — |
12 | 1100 | — | — | — | — | — |
11 | 1011 | — | — | — | — | — |
10 | 1010 | — | — | — | — | — |
9 | 1001 | — | — | — | — | — |
8 | 1000 | — | — | — | — | — |
7 | 0111 | 0111 | 0111 | 0111 | 1111 | — |
6 | 0110 | 0110 | 0110 | 0110 | 1110 | — |
5 | 0101 | 0101 | 0101 | 0101 | 1101 | 0101 |
4 | 0100 | 0100 | 0100 | 0100 | 1100 | 0100 |
3 | 0011 | 0011 | 0011 | 0011 | 1011 | 0111 |
2 | 0010 | 0010 | 0010 | 0010 | 1010 | 0110 |
1 | 0001 | 0001 | 0001 | 0001 | 1001 | 0001 |
0 | 0000 | 0000 | 0000 | 0000 | 1000 | 0000 |
−0 | 1000 | 1111 | ||||
−1 | — | 1001 | 1110 | 1111 | 0111 | 0011 |
−2 | — | 1010 | 1101 | 1110 | 0110 | 0010 |
−3 | — | 1011 | 1100 | 1101 | 0101 | 1101 |
−4 | — | 1100 | 1011 | 1100 | 0100 | 1100 |
−5 | — | 1101 | 1010 | 1011 | 0011 | 1111 |
−6 | — | 1110 | 1001 | 1010 | 0010 | 1110 |
−7 | — | 1111 | 1000 | 1001 | 0001 | 1001 |
−8 | — | — | — | 1000 | 0000 | 1000 |
−9 | — | — | — | — | — | 1011 |
−10 | — | — | — | — | — | 1010 |
−11 | — | — | — | — | — | — |
वही तालिका, जैसा कि इन बाइनरी बिट्स से देखा गया है, प्रतिनिधित्व प्रणाली द्वारा व्याख्या की गई संख्या क्या है:
Binary | Unsigned | Sign–magnitude | Ones' complement | Two's complement | Excess-8 | Base −2 |
---|---|---|---|---|---|---|
0000 | 0 | 0 | 0 | 0 | −8 | 0 |
0001 | 1 | 1 | 1 | 1 | −7 | 1 |
0010 | 2 | 2 | 2 | 2 | −6 | −2 |
0011 | 3 | 3 | 3 | 3 | −5 | −1 |
0100 | 4 | 4 | 4 | 4 | −4 | 4 |
0101 | 5 | 5 | 5 | 5 | −3 | 5 |
0110 | 6 | 6 | 6 | 6 | −2 | 2 |
0111 | 7 | 7 | 7 | 7 | −1 | 3 |
1000 | 8 | −0 | −7 | −8 | 0 | −8 |
1001 | 9 | −1 | −6 | −7 | 1 | −7 |
1010 | 10 | −2 | −5 | −6 | 2 | −10 |
1011 | 11 | −3 | −4 | −5 | 3 | −9 |
1100 | 12 | −4 | −3 | −4 | 4 | −4 |
1101 | 13 | −5 | −2 | −3 | 5 | −3 |
1110 | 14 | −6 | −1 | −2 | 6 | −6 |
1111 | 15 | −7 | −0 | −1 | 7 | −5 |
अन्य प्रणालियाँ
Google का प्रोटोकॉल बफ़र्स ज़िग-ज़ैग एन्कोडिंग संकेत-परिमाण के समान प्रणाली है, लेकिन संकेत का प्रतिनिधित्व करने के लिए कम से कम महत्वपूर्ण बिट का उपयोग करता है और इसमें शून्य का एकल प्रतिनिधित्व होता है। यह गैर-नकारात्मक (अहस्ताक्षरित) पूर्णांकों के लिए इच्छित चर-लंबाई मात्रा एन्कोडिंग को हस्ताक्षरित पूर्णांकों के लिए कुशलतापूर्वक उपयोग करने की अनुमति देता है।[11] उन्नत वीडियो कोडिंग में समान विधि का उपयोग किया जाता है|उन्नत वीडियो कोडिंग/एच.264 और उच्च दक्षता वीडियो कोडिंग|उच्च दक्षता वीडियो कोडिंग/एच.265 वीडियो संपीड़न मानकों को एक्सपोनेंशियल-गोलोम्ब कोडिंग#नकारात्मक संख्याओं तक विस्तार|एक्सपेंडेंशियल-गोलोम्ब का विस्तार करें ऋणात्मक संख्याओं को कोडिंग करना। उस विस्तार में, सबसे कम महत्वपूर्ण बिट लगभग साइन बिट है; शून्य में सभी नकारात्मक संख्याओं के समान न्यूनतम महत्वपूर्ण बिट (0) होता है। इस विकल्प के परिणामस्वरूप सबसे बड़ी परिमाण प्रतिनिधित्व योग्य सकारात्मक संख्या सबसे बड़ी परिमाण नकारात्मक संख्या से अधिक होती है, दो के पूरक या प्रोटोकॉल बफ़र्स ज़िग-ज़ैग एन्कोडिंग के विपरीत।
अन्य दृष्टिकोण यह है कि प्रत्येक संख्यात्मक अंक को चिह्न दिया जाए, जिससे हस्ताक्षरित अंक का प्रतिनिधित्व प्राप्त हो। उदाहरण के लिए, 1726 में, जॉन कोल्सन ने छोटी संख्याओं, अंकों 1, 2, 3, 4 और 5 तक अभिव्यक्तियों को कम करने की वकालत की। 1840 में, ऑगस्टिन कॉची ने भी गणना में त्रुटियों को कम करने के लिए ऐसी संशोधित दशमलव संख्याओं को प्राथमिकता दी।
यह भी देखें
- संतुलित टर्नरी
- बाइनरी-कोडित दशमलव
- कंप्यूटर नंबर प्रारूप
- पूरक की विधि
- हस्ताक्षर
संदर्भ
- ↑ Choo, Hunsoo; Muhammad, K.; Roy, K. (February 2003). "उच्च निष्पादन डीएफई के लिए दो पूरक संगणना साझाकरण गुणक और इसके अनुप्रयोग". IEEE Transactions on Signal Processing. 51 (2): 458–469. Bibcode:2003ITSP...51..458C. doi:10.1109/TSP.2002.806984.
- ↑ GE-625 / 635 Programming Reference Manual. General Electric. January 1966. Retrieved August 15, 2013.
- ↑ Intel 64 and IA-32 Architectures Software Developer's Manual (PDF). Intel. Section 4.2.1. Retrieved August 6, 2013.
- ↑ Power ISA Version 2.07. Power.org. Section 1.4. Retrieved August 6, 2013.,
- ↑ Bacon, Jason W. (2010–2011). "Computer Science 315 Lecture Notes". Retrieved 21 February 2020.
- ↑ US 4484301, "ऐरे मल्टीप्लायर किसी के पूरक प्रारूप में काम कर रहा है", issued 1981-03-10
- ↑ US 6760440, "एक का पूरक क्रिप्टोग्राफ़िक कॉम्बिनर", issued 1999-12-11
- ↑ Shedletsky, John J. (1977). "एंड-अराउंड-कैरी एडर के अनुक्रमिक और अनिश्चित व्यवहार पर टिप्पणी करें". IEEE Transactions on Computers. 26 (3): 271–272. doi:10.1109/TC.1977.1674817. S2CID 14661474.
- ↑ Donald Knuth: The Art of Computer Programming, Volume 2: Seminumerical Algorithms, chapter 4.1
- ↑ Thomas Finley (April 2000). "दो का अनुपूरण". Cornell University. Retrieved 15 September 2015.
- ↑ Protocol Buffers: Signed Integers
- Ivan Flores, The Logic of Computer Arithmetic, Prentice-Hall (1963)
- Israel Koren, Computer Arithmetic Algorithms, A.K. Peters (2002), ISBN 1-56881-160-8