हस्ताक्षरित संख्या अभ्यावेदन: Difference between revisions
No edit summary |
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| | {{distinguish|हस्ताक्षरित-अंकीय प्रतिनिधित्व}} | ||
[[ कम्प्यूटिंग | कम्प्यूटिंग]] में, बाइनरी नंबर सिस्टम में | [[ कम्प्यूटिंग | कम्प्यूटिंग]] में, बाइनरी नंबर सिस्टम में ऋणात्मक संख्याओं को एन्कोड करने के लिए [[हस्ताक्षरित संख्या]] प्रतिनिधित्व की आवश्यकता होती है। | ||
गणित में, किसी भी आधार में | गणित में, किसी भी आधार में ऋणात्मक संख्याओं को उनके पहले ऋण चिह्न ("-") लगाकर दर्शाया जाता है। चूँकि रैम या सीपीयू रजिस्टरों में, संख्याओं को अतिरिक्त प्रतीकों के बिना, केवल बिट्स के अनुक्रम के रूप में दर्शाया जाता है। हस्ताक्षरित संख्याओं का प्रतिनिधित्व करने के लिए बाइनरी अंक प्रणाली का विस्तार करने की चार सबसे प्रसिद्ध विधियां हैं: संकेत-परिमाण एक का पूरक, दो का पूरक, और ऑफसेट बाइनरी। कुछ वैकल्पिक विधि स्पष्ट संकेतों के अतिरिक्त अंतर्निहित संकेतों का उपयोग करते हैं, जैसे कि ऋणात्मक बाइनरी, आधार -2 का उपयोग करते हुए। अन्य आधारों के लिए अनुरूप विधि तैयार किए जा सकते हैं, चाहे धनात्मक, ऋणात्मक, भिन्नात्मक, या ऐसे विषयों पर अन्य विस्तार है। | ||
ऐसा कोई निश्चित मानदंड नहीं है जिसके आधार पर कोई भी प्रतिनिधित्व सार्वभौमिक रूप से श्रेष्ठ हो। पूर्णांकों के लिए, अधिकांश वर्तमान कंप्यूटिंग उपकरणों में उपयोग किया जाने वाला प्रतिनिधित्व दो का | ऐसा कोई निश्चित मानदंड नहीं है जिसके आधार पर कोई भी प्रतिनिधित्व सार्वभौमिक रूप से श्रेष्ठ हो। पूर्णांकों के लिए, अधिकांश वर्तमान कंप्यूटिंग उपकरणों में उपयोग किया जाने वाला प्रतिनिधित्व दो का कॉम्प्लीमेंट है, चूँकि UNIVAC 1100/2200 श्रृंखला मेनफ्रेम के कॉम्प्लीमेंट का उपयोग करते हैं। | ||
Line 12: | Line 12: | ||
== इतिहास == | == इतिहास == | ||
डिजिटल कंप्यूटिंग के | डिजिटल कंप्यूटिंग के प्रारंभ दिनों को हार्डवेयर प्रौद्योगिकी और गणित प्रौद्योगिकी (नंबवलय सिस्टम) दोनों के बारे में प्रतिस्पर्धी विचारों द्वारा चिह्नित किया गया था। बड़ी बहसों में से ऋणात्मक संख्याओं का प्रारूप था, जिसमें उस युग के कुछ शीर्ष विशेषज्ञों ने बहुत शसक्त और भिन्न राय व्यक्त की थी। एक शिविर ने दो के पूरक, उस व्यवस्था का समर्थन किया जो आज प्रबल है। अन्य शिविर ने लोगों के कॉम्प्लीमेंट का समर्थन किया, जहां सभी बिट्स को उसके धनात्मक समकक्ष में विपरीत करके ऋणात्मक मान बनाया जाता है। तीसरे समूह ने संकेत-परिमाण का समर्थन किया, जहां शब्द के उच्चतम-क्रम बिट को टॉगल करके मान को धनात्मक से ऋणात्मक में बदल दिया जाता है। | ||
प्रत्येक प्रणाली के पक्ष और विपक्ष में | प्रत्येक प्रणाली के पक्ष और विपक्ष में लॉजिक थे। मेमोरी डंप (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> प्रारंभिक मेनफ्रेम पर प्रोसेसर में अधिकांशत: हजारों ट्रांजिस्टर सम्मिलित होते थे, इसलिए महत्वपूर्ण संख्या में ट्रांजिस्टर को समाप्त करना एक महत्वपूर्ण निवेश बचत थी। आईबीएम सिस्टम/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, आदि) के आर्किटेक्ट ने भी दो के कॉम्प्लीमेंट गणित का उपयोग करना चुना। जैसे-जैसे IC तकनीक उन्नत हुई, x86, <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> m68k, पावर ISA,<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> MIPS, SPARC, ARM, इटेनियम, PA-RISC और DEC अल्फा सहित लगभग सभी प्रोसेसर में दो की कॉम्प्लीमेंट तकनीक को अपनाया गया है। | ||
== चिह्न-परिमाण == | == चिह्न-परिमाण == | ||
Line 55: | Line 55: | ||
| 11111111 || −127 || 255 | | 11111111 || −127 || 255 | ||
|} | |} | ||
साइन-परिमाण प्रतिनिधित्व में, जिसे साइन-एंड-मैग्नीट्यूड या हस्ताक्षरित परिमाण भी कहा जाता है, | साइन-परिमाण प्रतिनिधित्व में, जिसे साइन-एंड-मैग्नीट्यूड या हस्ताक्षरित परिमाण भी कहा जाता है, एक हस्ताक्षरित संख्या को साइन बिट के लिए संख्या के संकेत के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है (अक्सर सबसे महत्वपूर्ण बिट, ए के लिए 0 पर सेट होता है) सकारात्मक संख्या और ऋणात्मक संख्या के लिए 1), और शेष बिट्स के लिए संख्या का परिमाण (या निरपेक्ष मान)। उदाहरण के लिए, आठ-बिट बाइट में, केवल सात बिट परिमाण का प्रतिनिधित्व करते हैं, जो 0000000 (0) से 1111111 (127) तक हो सकते हैं। इस प्रकार साइन बिट (आठवां बिट) जोड़ने के बाद −127<sub>10</sub> to +127<sub>10</sub> तक की संख्याओं को दर्शाया जा सकता है। उदाहरण के लिए, आठ-बिट बाइट में एन्कोड किया गया −43<sub>10</sub> 10101011 है जबकि 43<sub>10</sub> '''0'''0101011 है। साइन-परिमाण प्रतिनिधित्व का उपयोग करने के अनेक परिणाम होते हैं जो उन्हें प्रयुक्त करने के लिए और अधिक काम्प्लेक्स बनाते हैं: <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). | ||
# जोड़ और घटाव के लिए साइन बिट के आधार पर अलग-अलग व्यवहार की आवश्यकता होती है, जबकि | # जोड़ और घटाव के लिए साइन बिट के आधार पर अलग-अलग व्यवहार की आवश्यकता होती है, जबकि इसका कॉम्प्लीमेंट साइन बिट को अनदेखा कर सकता है और केवल एंड-अराउंड कैरी कर सकता है, और दो का कॉम्प्लीमेंट साइन बिट को अनदेखा कर सकता है और अतिप्रवाह व्यवहार पर निर्भर कर सकता है। | ||
# तुलना के लिए साइन बिट का निरीक्षण करना भी आवश्यक है, जबकि दो के | # तुलना के लिए साइन बिट का निरीक्षण करना भी आवश्यक है, जबकि दो के कॉम्प्लीमेंट में, कोई सरलता से दो संख्याओं को घटा सकता है, और जांच कर सकता है कि परिणाम धनात्मक या ऋणात्मक है। | ||
# दो के | # दो के कॉम्प्लीमेंट के स्थिति में न्यूनतम ऋणात्मक संख्या -128 के अतिरिक्त -127 है। | ||
यह दृष्टिकोण किसी चिह्न को दिखाने के सामान्य | यह दृष्टिकोण किसी चिह्न को दिखाने के सामान्य विधि (संख्या के परिमाण के आगे + या − लगाने) से सीधे तुलनीय है। कुछ प्रारंभिक बाइनरी कंप्यूटर (उदाहरण के लिए, आईबीएम 7090) इस प्रतिनिधित्व का उपयोग करते हैं, संभवतः सामान्य उपयोग के साथ इसके प्राकृतिक संबंध के कारण। [[फ़्लोटिंग-पॉइंट अंकगणित]] या फ़्लोटिंग-पॉइंट मानों में [[महत्व]] का प्रतिनिधित्व करने का संकेत-परिमाण सबसे समान्य विधि है | ||
== | ==वन' कॉम्प्लीमेंट == | ||
{{Main| | {{Main|वन' कॉम्प्लीमेंट }} | ||
{|class="wikitable" style="float:right; width: 20em; margin-left: 1em; text-align:center" | {|class="wikitable" style="float:right; width: 20em; margin-left: 1em; text-align:center" | ||
Line 99: | 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> ऋणात्मक संख्या को धनात्मक संख्या के बिटवाइज़ 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>). हो जाता है। किसी के कॉम्प्लीमेंट का उपयोग करके हस्ताक्षरित संख्याओं की श्रेणी को −(2<sup>''N''−1</sup> − 1) to (2<sup>''N''−1</sup> − 1) और ±0 द्वारा दर्शाया जाता है। एक पारंपरिक आठ-बिट बाइट −127<sub>10</sub> to +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) में जोड़ने का स्थिति दिखाया गया है: | ||
'''<पूर्व>''' | |||
+ 00000010 +2 | |||
─────────── ── | binary decimal | ||
11111110 −1 | |||
+ 00000010 +2 | |||
─────────── ── | ─────────── ── | ||
1 00000000 0 ← Not the correct answer | |||
</पूर्व> | 1 +1 ← Add carry | ||
─────────── ── | |||
00000001 1 ← Correct answer | |||
'''</पूर्व>''' | |||
पिछले उदाहरण में, पहला बाइनरी जोड़ 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 के रूप में दर्शाया जा सकता है। | ||
== दो | == दो कॉम्प्लीमेंट == | ||
{{Main| | {{Main|दो कॉम्प्लीमेंट}} | ||
{|class="wikitable" style="float:right; width: 20em; margin-left: 1em; text-align:center" | {|class="wikitable" style="float:right; width: 20em; margin-left: 1em; text-align:center" | ||
Line 153: | Line 155: | ||
| 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>''N''</sup>: <math>\mathbb{Z}/2^N\mathbb{Z}</math> पर वलय संरचना को दर्शाता है। दो-पूरक पूर्णांकों की एक जोड़ी को जोड़ना अहस्ताक्षरित संख्याओं की एक जोड़ी को जोड़ने के समान है (अतिप्रवाह का पता लगाने के अलावा, यदि ऐसा किया जाता है); यही बात घटाव के लिए भी सच है और यहां तक कि किसी उत्पाद के एन न्यूनतम महत्वपूर्ण बिट्स (गुणन का मूल्य) के लिए भी सच है। उदाहरण के लिए, 127 और −128 का दो-पूरक जोड़ 127 और 128 के अहस्ताक्षरित जोड़ के समान बाइनरी बिट पैटर्न देता है, जैसा कि 8-बिट दो की पूरक तालिका से देखा जा सकता है। | ||
दो के | दो के कॉम्प्लीमेंट में किसी संख्या का निषेधन प्राप्त करने की सरल विधि इस प्रकार है: | ||
{|class="wikitable" | {|class="wikitable" | ||
! | ! | ||
! | ! उदाहरण 1 | ||
! | ! उदाहरण 2 | ||
|- | |- | ||
| 1. | |1. दाएं से प्रारंभ करते हुए, पहला "1" खोजे | ||
|align="center"| 0010100'''1''' | |align="center"| 0010100'''1''' | ||
|align="center"| 00101'''1'''00 | |align="center"| 00101'''1'''00 | ||
|- | |- | ||
| 2. | |2. उस "1" के बाईं ओर के सभी बिट्स को विपरीत करें | ||
|align="center"| '''1101011'''1 | |align="center"| '''1101011'''1 | ||
|align="center"| '''11010'''100 | |align="center"| '''11010'''100 | ||
Line 174: | Line 176: | ||
विधि दो: | विधि दो: | ||
# संख्या के माध्यम से सभी बिट्स को | # संख्या के माध्यम से सभी बिट्स को विपरीत करें | ||
# जोड़ें | # जोड़ें | ||
उदाहरण: +2 के लिए, जो बाइनरी में 00000010 है (~ वर्ण C (प्रोग्रामिंग | उदाहरण: +2 के लिए, जो बाइनरी में 00000010 है (~ वर्ण C (प्रोग्रामिंग लैंग्वेज) बिटवाइज़ ऑपरेटर नहीं है, इसलिए ~X का अर्थ है X में सभी बिट्स को विपरीत करना है): | ||
# ~00000010 → 11111101 | # ~00000010 → 11111101 | ||
# 11111101 + 1 → 11111110 (दो के | # 11111101 + 1 → 11111110 (दो के कॉम्प्लीमेंट में −2) | ||
== ऑफ़सेट बाइनरी == | == ऑफ़सेट बाइनरी == | ||
{{Main| | {{Main|ऑफ़सेट बाइनरी}} | ||
{|class="wikitable" style="float:right; width: 20em; margin-left: 1em; text-align:center" | {|class="wikitable" style="float:right; width: 20em; margin-left: 1em; text-align:center" | ||
Line 209: | Line 211: | ||
|- | |- | ||
|} | |} | ||
पक्षपातपूर्ण निरूपण अब मुख्य रूप से | |||
ऑफसेट बाइनरी प्रतिनिधित्व में, जिसे अतिरिक्त-के या बायस्ड भी कहा जाता है, एक हस्ताक्षरित संख्या को अहस्ताक्षरित संख्या प्लस के के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है, जिसमें के बायसिंग मान या ऑफसेट होता है। इस प्रकार 0 को K द्वारा दर्शाया जाता है, और −K को पूर्ण-शून्य बिट पैटर्न द्वारा दर्शाया जाता है। इसे उपरोक्त दो-पूरक के एक मामूली संशोधन और सामान्यीकरण के रूप में देखा जा सकता है, जो वस्तुतः ऋणात्मक सबसे महत्वपूर्ण बिट के साथ अतिरिक्त{{nobr|-(2<sup><var>N</var>−1</sup>)}} प्रतिनिधित्व है। | |||
पक्षपातपूर्ण निरूपण अब मुख्य रूप से फ़्लोटिंग-पॉइंट संख्याओं के प्रतिपादक के लिए उपयोग किया जाता है। आईईईई 754 फ़्लोटिंग-पॉइंट मानक एकल-सटीक (32-बिट) संख्या के घातांक फ़ील्ड को 8-बिट अतिरिक्त-127 फ़ील्ड के रूप में परिभाषित करता है। डबल-प्रिसिजन (64-बिट) एक्सपोनेंट फ़ील्ड 11-बिट अतिरिक्त-1023 फ़ील्ड है; प्रतिपादक पूर्वाग्रह देखें. इसका उपयोग बाइनरी-कोडित दशमलव संख्याओं के लिए अतिरिक्त-3 के रूप में भी किया जाता था। | |||
== आधार −2 == | == आधार −2 == | ||
{{See also| | {{See also|ऋणात्मक आधार}} | ||
{|class="wikitable" style="float:right; width: 20em; margin-left: 1em; text-align:center" | {|class="wikitable" style="float:right; width: 20em; margin-left: 1em; text-align:center" | ||
|+ | |+ आठ-बिट आधार −2 | ||
|- | |- | ||
! | !बाइनरी मान | ||
! | !आधार −2 व्याख्या | ||
! | !बिना हस्ताक्षरित व्याख्या | ||
|- | |- | ||
| 00000000 || 0 || 0 | | 00000000 || 0 || 0 | ||
Line 240: | Line 244: | ||
|- | |- | ||
|} | |} | ||
प्रदर्शित की जा सकने वाली संख्याओं की सीमा असममित है। यदि शब्द में बिट्स की संख्या सम है, तो प्रदर्शित की जा सकने वाली सबसे बड़ी ऋणात्मक संख्या का परिमाण, प्रदर्शित की जा सकने वाली सबसे बड़ी धनात्मक संख्या से दोगुना बड़ा होता है, और यदि शब्द में विषम संख्या में बिट्स हों तो इसके | |||
आधार -2 प्रतिनिधित्व में, एक हस्ताक्षरित संख्या को आधार -2 के साथ एक संख्या प्रणाली का उपयोग करके दर्शाया जाता है। पारंपरिक बाइनरी संख्या प्रणालियों में, आधार, या मूलांक, 2 है; इस प्रकार सबसे दाहिना बिट 2<sup>0</sup>,का प्रतिनिधित्व करता है, अगला बिट 2<sup>1</sup> का प्रतिनिधित्व करता है, अगला बिट 2<sup>2</sup> का प्रतिनिधित्व करता है, और इसी तरह चूँकि , आधार -2 के साथ एक द्विआधारी संख्या प्रणाली भी संभव है। सबसे दाहिना बिट (−2)<sup>0</sup> = +1 दर्शाता है, अगला बिट (−2)<sup>1</sup> = −2, दर्शाता है, अगला बिट (−2)<sup>2</sup> = +4 दर्शाता है और इसी तरह, वैकल्पिक चिह्न के साथ। जिन संख्याओं को चार बिट्स के साथ दर्शाया जा सकता है, उन्हें नीचे तुलना तालिका में दिखाया गया है। | |||
प्रदर्शित की जा सकने वाली संख्याओं की सीमा असममित है। यदि शब्द में बिट्स की संख्या सम है, तो प्रदर्शित की जा सकने वाली सबसे बड़ी ऋणात्मक संख्या का परिमाण, प्रदर्शित की जा सकने वाली सबसे बड़ी धनात्मक संख्या से दोगुना बड़ा होता है, और यदि शब्द में विषम संख्या में बिट्स हों तो इसके विपरीत होता है। | |||
== तुलना तालिका == | == तुलना तालिका == | ||
निम्न तालिका | निम्न तालिका धनात्मक और ऋणात्मक पूर्णांक दिखाती है जिन्हें चार बिट्स का उपयोग करके दर्शाया जा सकता है। | ||
{| class="wikitable" style="text-align: center" | {| class="wikitable" style="text-align: center" | ||
|+ | |+ चार-बिट पूर्णांक प्रतिनिधित्व | ||
|- | |- | ||
! style="width: 7em" | | ! style="width: 7em" | डेसीमल | ||
! style="width: 7em" | | ! style="width: 7em" |अनसिग्नेड | ||
! style="width: 7em" | | ! style="width: 7em" | सिग्न–मैग्नीट्यूड | ||
! style="width: 7em" | | ! style="width: 7em" |वन' कॉम्प्लीमेंट | ||
! style="width: 7em" | | ! style="width: 7em" |दो कॉम्प्लीमेंट | ||
! style="width: 7em" | | ! style="width: 7em" |अतिरिक्त-8 (बायस्ड) | ||
! style="width: 7em" | | ! style="width: 7em" | बेस−2 | ||
|- | |- | ||
| align=right|16 | | align=right|16 | ||
Line 491: | Line 497: | ||
{| class="wikitable" style="text-align: center" | {| class="wikitable" style="text-align: center" | ||
|- | |- | ||
! | !बायनरी | ||
!अनसिग्नेड | |||
! सिग्न–मैग्नीट्यूड !!वन' कॉम्प्लीमेंट | |||
!दो कॉम्प्लीमेंट | |||
! अतिरिक्त-8 !! बेस−2 | |||
|- | |- | ||
| 0000 || 0 || 0 || 0 || 0 || −8 || 0 | | 0000 || 0 || 0 || 0 || 0 || −8 || 0 | ||
Line 529: | Line 539: | ||
== अन्य प्रणालियाँ == | == अन्य प्रणालियाँ == | ||
गूगल का [[प्रोटोकॉल बफ़र्स]] ज़िग-ज़ैग एन्कोडिंग संकेत-परिमाण के समान प्रणाली है, किंतु संकेत का प्रतिनिधित्व करने के लिए [[कम से कम महत्वपूर्ण बिट|लीस्ट सिग्निफिकेन्ट बिट]] का उपयोग करता है और इसमें शून्य का एकल प्रतिनिधित्व होता है। यह गैर-ऋणात्मक (अहस्ताक्षरित) पूर्णांकों के लिए इच्छित वेरिएबल -लंबाई मात्रा एन्कोडिंग को हस्ताक्षरित पूर्णांकों के लिए कुशलतापूर्वक उपयोग करने की अनुमति देता है।<ref>[http://developers.google.com/protocol-buffers/docs/encoding#types Protocol Buffers: Signed Integers]</ref> | |||
उन्नत वीडियो कोडिंग में समान विधि का उपयोग किया जाता है|उन्नत वीडियो कोडिंग/एच.264 और उच्च दक्षता वीडियो कोडिंग|उच्च दक्षता वीडियो कोडिंग/एच.265 वीडियो संपीड़न मानकों को एक्सपोनेंशियल-गोलोम्ब कोडिंग | |||
उन्नत वीडियो कोडिंग में समान विधि का उपयोग किया जाता है| उन्नत वीडियो कोडिंग/एच.264 और उच्च दक्षता वीडियो कोडिंग|उच्च दक्षता वीडियो कोडिंग/एच.265 वीडियो संपीड़न मानकों को एक्सपोनेंशियल-गोलोम्ब कोडिंग या ऋणात्मक संख्याओं तक विस्तार या एक्सपेंडेंशियल-गोलोम्ब का विस्तार करें ऋणात्मक संख्याओं को कोडिंग करना है। उस विस्तार में, सबसे कम महत्वपूर्ण बिट लगभग साइन बिट है; शून्य में सभी ऋणात्मक संख्याओं के समान न्यूनतम महत्वपूर्ण बिट (0) होता है। इस विकल्प के परिणामस्वरूप सबसे बड़ी परिमाण प्रतिनिधित्व योग्य धनात्मक संख्या सबसे बड़ी परिमाण ऋणात्मक संख्या से अधिक होती है, दो के कॉम्प्लीमेंट या प्रोटोकॉल बफ़र्स ज़िग-ज़ैग एन्कोडिंग के विपरीत है। | |||
अन्य दृष्टिकोण यह है कि प्रत्येक [[संख्यात्मक अंक]] को चिह्न दिया जाए, जिससे हस्ताक्षरित अंक का प्रतिनिधित्व प्राप्त हो। उदाहरण के लिए, 1726 में, [[जॉन कोल्सन]] ने छोटी संख्याओं, अंकों 1, 2, 3, 4 और 5 तक अभिव्यक्तियों को कम करने की वकालत की। 1840 में, [[ऑगस्टिन कॉची]] ने भी गणना में त्रुटियों को कम करने के लिए ऐसी संशोधित दशमलव संख्याओं को प्राथमिकता | अन्य दृष्टिकोण यह है कि प्रत्येक [[संख्यात्मक अंक]] को चिह्न दिया जाए, जिससे हस्ताक्षरित अंक का प्रतिनिधित्व प्राप्त हो। उदाहरण के लिए, 1726 में, [[जॉन कोल्सन]] ने छोटी संख्याओं, अंकों 1, 2, 3, 4 और 5 तक अभिव्यक्तियों को कम करने की वकालत की। 1840 में, [[ऑगस्टिन कॉची]] ने भी गणना में त्रुटियों को कम करने के लिए ऐसी संशोधित दशमलव संख्याओं को प्राथमिकता दी थी। | ||
== यह भी देखें == | == यह भी देखें == | ||
* संतुलित टर्नरी | * संतुलित टर्नरी | ||
* [[बाइनरी-कोडित दशमलव]] | * [[बाइनरी-कोडित दशमलव]] | ||
* [[कंप्यूटर नंबर प्रारूप]] | * [[कंप्यूटर नंबर प्रारूप]] | ||
*[[पूरक की विधि]] | *[[पूरक की विधि|कॉम्प्लीमेंट की विधि]] | ||
* हस्ताक्षर | * हस्ताक्षर | ||
Revision as of 12:23, 9 August 2023
कम्प्यूटिंग में, बाइनरी नंबर सिस्टम में ऋणात्मक संख्याओं को एन्कोड करने के लिए हस्ताक्षरित संख्या प्रतिनिधित्व की आवश्यकता होती है।
गणित में, किसी भी आधार में ऋणात्मक संख्याओं को उनके पहले ऋण चिह्न ("-") लगाकर दर्शाया जाता है। चूँकि रैम या सीपीयू रजिस्टरों में, संख्याओं को अतिरिक्त प्रतीकों के बिना, केवल बिट्स के अनुक्रम के रूप में दर्शाया जाता है। हस्ताक्षरित संख्याओं का प्रतिनिधित्व करने के लिए बाइनरी अंक प्रणाली का विस्तार करने की चार सबसे प्रसिद्ध विधियां हैं: संकेत-परिमाण एक का पूरक, दो का पूरक, और ऑफसेट बाइनरी। कुछ वैकल्पिक विधि स्पष्ट संकेतों के अतिरिक्त अंतर्निहित संकेतों का उपयोग करते हैं, जैसे कि ऋणात्मक बाइनरी, आधार -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, आदि) के आर्किटेक्ट ने भी दो के कॉम्प्लीमेंट गणित का उपयोग करना चुना। जैसे-जैसे IC तकनीक उन्नत हुई, x86, [3] m68k, पावर ISA,[4] MIPS, SPARC, ARM, इटेनियम, PA-RISC और DEC अल्फा सहित लगभग सभी प्रोसेसर में दो की कॉम्प्लीमेंट तकनीक को अपनाया गया है।
चिह्न-परिमाण
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) तक हो सकते हैं। इस प्रकार साइन बिट (आठवां बिट) जोड़ने के बाद −12710 to +12710 तक की संख्याओं को दर्शाया जा सकता है। उदाहरण के लिए, आठ-बिट बाइट में एन्कोड किया गया −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 (4310) का कॉम्प्लीमेंट रूप 11010100 (−4310). हो जाता है। किसी के कॉम्प्लीमेंट का उपयोग करके हस्ताक्षरित संख्याओं की श्रेणी को −(2N−1 − 1) to (2N−1 − 1) और ±0 द्वारा दर्शाया जाता है। एक पारंपरिक आठ-बिट बाइट −12710 to +12710 है और शून्य या तो 00000000 (+0) या 11111111 (−0) है।
इस प्रणाली में प्रदर्शित दो संख्याओं को जोड़ने के लिए, एक पारंपरिक बाइनरी जोड़ किया जाता है, लेकिन फिर एंड-अराउंड कैरी करना आवश्यक होता है: अथार्त, किसी भी परिणामी कैरी को परिणामी योग में वापस जोड़ें।[8] यह देखने के लिए कि यह क्यों आवश्यक है, निम्नलिखित उदाहरण पर विचार करें जिसमें −1 (1111110) को +2 (00000010) में जोड़ने का स्थिति दिखाया गया है:
<पूर्व>
binary decimal 11111110 −1 + 00000010 +2 ─────────── ── 1 00000000 0 ← Not the correct answer 1 +1 ← Add carry ─────────── ── 00000001 1 ← Correct answer
</पूर्व>
पिछले उदाहरण में, पहला बाइनरी जोड़ 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] यह वास्तव में सभी पूर्णांक मॉड्यूलो 2N: पर वलय संरचना को दर्शाता है। दो-पूरक पूर्णांकों की एक जोड़ी को जोड़ना अहस्ताक्षरित संख्याओं की एक जोड़ी को जोड़ने के समान है (अतिप्रवाह का पता लगाने के अलावा, यदि ऐसा किया जाता है); यही बात घटाव के लिए भी सच है और यहां तक कि किसी उत्पाद के एन न्यूनतम महत्वपूर्ण बिट्स (गुणन का मूल्य) के लिए भी सच है। उदाहरण के लिए, 127 और −128 का दो-पूरक जोड़ 127 और 128 के अहस्ताक्षरित जोड़ के समान बाइनरी बिट पैटर्न देता है, जैसा कि 8-बिट दो की पूरक तालिका से देखा जा सकता है।
दो के कॉम्प्लीमेंट में किसी संख्या का निषेधन प्राप्त करने की सरल विधि इस प्रकार है:
उदाहरण 1 | उदाहरण 2 | |
---|---|---|
1. दाएं से प्रारंभ करते हुए, पहला "1" खोजे | 00101001 | 00101100 |
2. उस "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 |
ऑफसेट बाइनरी प्रतिनिधित्व में, जिसे अतिरिक्त-के या बायस्ड भी कहा जाता है, एक हस्ताक्षरित संख्या को अहस्ताक्षरित संख्या प्लस के के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है, जिसमें के बायसिंग मान या ऑफसेट होता है। इस प्रकार 0 को K द्वारा दर्शाया जाता है, और −K को पूर्ण-शून्य बिट पैटर्न द्वारा दर्शाया जाता है। इसे उपरोक्त दो-पूरक के एक मामूली संशोधन और सामान्यीकरण के रूप में देखा जा सकता है, जो वस्तुतः ऋणात्मक सबसे महत्वपूर्ण बिट के साथ अतिरिक्त-(2N−1) प्रतिनिधित्व है।
पक्षपातपूर्ण निरूपण अब मुख्य रूप से फ़्लोटिंग-पॉइंट संख्याओं के प्रतिपादक के लिए उपयोग किया जाता है। आईईईई 754 फ़्लोटिंग-पॉइंट मानक एकल-सटीक (32-बिट) संख्या के घातांक फ़ील्ड को 8-बिट अतिरिक्त-127 फ़ील्ड के रूप में परिभाषित करता है। डबल-प्रिसिजन (64-बिट) एक्सपोनेंट फ़ील्ड 11-बिट अतिरिक्त-1023 फ़ील्ड है; प्रतिपादक पूर्वाग्रह देखें. इसका उपयोग बाइनरी-कोडित दशमलव संख्याओं के लिए अतिरिक्त-3 के रूप में भी किया जाता था।
आधार −2
बाइनरी मान | आधार −2 व्याख्या | बिना हस्ताक्षरित व्याख्या |
---|---|---|
00000000 | 0 | 0 |
00000001 | 1 | 1 |
⋮ | ⋮ | ⋮ |
01111111 | 43 | 127 |
10000000 | −128 | 128 |
10000001 | −127 | 129 |
⋮ | ⋮ | ⋮ |
11111111 | −85 | 255 |
आधार -2 प्रतिनिधित्व में, एक हस्ताक्षरित संख्या को आधार -2 के साथ एक संख्या प्रणाली का उपयोग करके दर्शाया जाता है। पारंपरिक बाइनरी संख्या प्रणालियों में, आधार, या मूलांक, 2 है; इस प्रकार सबसे दाहिना बिट 20,का प्रतिनिधित्व करता है, अगला बिट 21 का प्रतिनिधित्व करता है, अगला बिट 22 का प्रतिनिधित्व करता है, और इसी तरह चूँकि , आधार -2 के साथ एक द्विआधारी संख्या प्रणाली भी संभव है। सबसे दाहिना बिट (−2)0 = +1 दर्शाता है, अगला बिट (−2)1 = −2, दर्शाता है, अगला बिट (−2)2 = +4 दर्शाता है और इसी तरह, वैकल्पिक चिह्न के साथ। जिन संख्याओं को चार बिट्स के साथ दर्शाया जा सकता है, उन्हें नीचे तुलना तालिका में दिखाया गया है।
प्रदर्शित की जा सकने वाली संख्याओं की सीमा असममित है। यदि शब्द में बिट्स की संख्या सम है, तो प्रदर्शित की जा सकने वाली सबसे बड़ी ऋणात्मक संख्या का परिमाण, प्रदर्शित की जा सकने वाली सबसे बड़ी धनात्मक संख्या से दोगुना बड़ा होता है, और यदि शब्द में विषम संख्या में बिट्स हों तो इसके विपरीत होता है।
तुलना तालिका
निम्न तालिका धनात्मक और ऋणात्मक पूर्णांक दिखाती है जिन्हें चार बिट्स का उपयोग करके दर्शाया जा सकता है।
डेसीमल | अनसिग्नेड | सिग्न–मैग्नीट्यूड | वन' कॉम्प्लीमेंट | दो कॉम्प्लीमेंट | अतिरिक्त-8 (बायस्ड) | बेस−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 | — | — | — | — | — | — |
वही तालिका, जैसा कि इन बाइनरी बिट्स से देखा गया है, प्रतिनिधित्व प्रणाली द्वारा व्याख्या की गई संख्या क्या है:
बायनरी | अनसिग्नेड | सिग्न–मैग्नीट्यूड | वन' कॉम्प्लीमेंट | दो कॉम्प्लीमेंट | अतिरिक्त-8 | बेस−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 |
अन्य प्रणालियाँ
गूगल का प्रोटोकॉल बफ़र्स ज़िग-ज़ैग एन्कोडिंग संकेत-परिमाण के समान प्रणाली है, किंतु संकेत का प्रतिनिधित्व करने के लिए लीस्ट सिग्निफिकेन्ट बिट का उपयोग करता है और इसमें शून्य का एकल प्रतिनिधित्व होता है। यह गैर-ऋणात्मक (अहस्ताक्षरित) पूर्णांकों के लिए इच्छित वेरिएबल -लंबाई मात्रा एन्कोडिंग को हस्ताक्षरित पूर्णांकों के लिए कुशलतापूर्वक उपयोग करने की अनुमति देता है।[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