हस्ताक्षरित संख्या अभ्यावेदन

कम्प्यूटिंग में, बाइनरी नंबर सिस्टम में ऋणात्मक संख्याओं को एन्कोड करने के लिए हस्ताक्षरित संख्या प्रतिनिधित्व की आवश्यकता होती है।

गणित में, किसी भी आधार में ऋणात्मक संख्याओं को उनके पहले ऋण चिह्न ("-") लगाकर दर्शाया जाता है। चूँकि रैम या सीपीयू रजिस्टरों में, संख्याओं को अतिरिक्त प्रतीकों के बिना, केवल बिट्स के अनुक्रम के रूप में दर्शाया जाता है। हस्ताक्षरित संख्याओं का प्रतिनिधित्व करने के लिए बाइनरी अंक प्रणाली का विस्तार करने की चार सबसे प्रसिद्ध विधियां हैं: संकेत-परिमाण एक का पूरक, दो का पूरक, और ऑफसेट बाइनरी। कुछ वैकल्पिक विधि स्पष्ट संकेतों के अतिरिक्त अंतर्निहित संकेतों का उपयोग करते हैं, जैसे कि ऋणात्मक बाइनरी, आधार -2 का उपयोग करते हुए। अन्य आधारों के लिए अनुरूप विधि तैयार किए जा सकते हैं, चाहे धनात्मक, ऋणात्मक, भिन्नात्मक, या ऐसे विषयों पर अन्य विस्तार है।

ऐसा कोई निश्चित मानदंड नहीं है जिसके आधार पर कोई भी प्रतिनिधित्व सार्वभौमिक रूप से श्रेष्ठ हो। पूर्णांकों के लिए, अधिकांश वर्तमान कंप्यूटिंग उपकरणों में उपयोग किया जाने वाला प्रतिनिधित्व दो का कॉम्प्लीमेंट है, चूँकि UNIVAC 1100/2200 श्रृंखला मेनफ्रेम के कॉम्प्लीमेंट का उपयोग करते हैं।

इतिहास
डिजिटल कंप्यूटिंग के प्रारंभ दिनों को हार्डवेयर प्रौद्योगिकी और गणित प्रौद्योगिकी (नंबवलय सिस्टम) दोनों के बारे में प्रतिस्पर्धी विचारों द्वारा चिह्नित किया गया था। बड़ी बहसों में से ऋणात्मक संख्याओं का प्रारूप था, जिसमें उस युग के कुछ शीर्ष विशेषज्ञों ने बहुत शसक्त और भिन्न राय व्यक्त की थी। एक शिविर ने दो के पूरक, उस व्यवस्था का समर्थन किया जो आज प्रबल है।  अन्य शिविर ने लोगों के कॉम्प्लीमेंट का समर्थन किया, जहां सभी बिट्स को उसके धनात्मक  समकक्ष में विपरीत करके  ऋणात्मक मान बनाया जाता है।  तीसरे समूह ने संकेत-परिमाण का समर्थन किया, जहां शब्द के उच्चतम-क्रम बिट को टॉगल करके  मान को धनात्मक  से ऋणात्मक में बदल दिया जाता है।

प्रत्येक प्रणाली के पक्ष और विपक्ष में लॉजिक थे। मेमोरी डंप (1960 के दशक में  सामान्य प्रक्रिया) का सरल पता लगाने के लिए साइन-मैग्नीट्यूड की अनुमति दी गई है क्योंकि छोटे संख्यात्मक मान कम 1 बिट का उपयोग करते हैं। ये प्रणालियाँ लोगों को आंतरिक रूप से गणित का कॉम्प्लीमेंट बनाती हैं, इसलिए जब संख्याओं को  रजिस्टर से गणित इकाई में प्रेषित किया जाता है तो उन्हें लोगों के कॉम्प्लीमेंट मानो में परिवर्तित करना होगा और फिर जब परिणाम वापस रजिस्टर में प्रेषित किया जाता है तो उन्हें वापस संकेत-परिमाण में परिवर्तित करना होगा।. इलेक्ट्रॉनिक्स को अन्य प्रणालियों की तुलना में अधिक गेटों की आवश्यकता होती है – प्रमुख चिंता का विषय तब था जब अलग-अलग ट्रांजिस्टर की कास्ट और पैकेजिंग महत्वपूर्ण थी। आईबीएम साइन-मैग्नीट्यूड के प्रारंभ समर्थकों में से  था, उनके आईबीएम 704, आईबीएम 709 और आईबीएम 7090 श्रृंखला के कंप्यूटर संभवतः इसका उपयोग करने के लिए सबसे प्रसिद्ध सिस्टम थे।

वन्स के कॉम्प्लीमेंट ने कुछ सीमा तक सरल हार्डवेयर डिज़ाइन की अनुमति दी, क्योंकि गणित इकाई में और उससे पास होने पर मानो को परिवर्तित करने की कोई आवश्यकता नहीं थी। किंतु इसने संकेत-परिमाण के साथ अवांछनीय विशेषता भी साझा की: ऋणात्मक शून्य (−0) का प्रतिनिधित्व करने की क्षमता है जिससे ऋणात्मक शून्य बिल्कुल धनात्मक शून्य की तरह व्यवहार करता है: जब किसी भी गणना में  ऑपरेंड के रूप में उपयोग किया जाता है, तो परिणाम वही होगा चाहे  ऑपरेंड धनात्मक  या ऋणात्मक शून्य हो। इसमें हानि यह है कि शून्य के साथ समानता की जाँच करते समय समान मूल्य के दो रूपों के अस्तित्व के लिए दो तुलनाओं की आवश्यकता होती है। किसी के कॉम्प्लीमेंट घटाव का परिणाम अंततः उधार (नीचे वर्णित) भी हो सकता है। यह लॉजिक  दिया जा सकता है कि यह जोड़ और घटाव लॉजिक  को अधिक काम्प्लेक्स बनाता है या यह इसे सरल बनाता है, क्योंकि घटाव के लिए बस दूसरे ऑपरेंड के बिट्स को विपरीत करने की आवश्यकता होती है क्योंकि यह योजक को पास किया जाता है। PDP-1, CDC 160 श्रृंखला, CDC 3000 श्रृंखला, CDC 6000 श्रृंखला, UNIVAC 1100 श्रृंखला, और LINC कंप्यूटर  कॉम्प्लीमेंट प्रतिनिधित्व का उपयोग करते हैं।

टू का कॉम्प्लीमेंट हार्डवेयर में प्रयुक्त करना सबसे आसान है, जो इसकी व्यापक लोकप्रियता का अंतिम कारण हो सकता है। प्रारंभिक मेनफ्रेम पर प्रोसेसर में अधिकांशत: हजारों ट्रांजिस्टर सम्मिलित होते थे, इसलिए महत्वपूर्ण संख्या में ट्रांजिस्टर को समाप्त करना एक महत्वपूर्ण निवेश बचत थी। आईबीएम सिस्टम/360, जीई-600 श्रृंखला, और पीडीपी-6 और पीडीपी-10 जैसे मेनफ्रेम दो कॉम्प्लीमेंट का उपयोग करते हैं, जैसे मिनी कंप्यूटर जैसे पीडीपी-5 और पीडीपी-8 और पीडीपी-11 और वैक्स मशीनें। प्रारंभिक एकीकृत-सर्किट-आधारित सीपीयू (इंटेल 8080, आदि) के आर्किटेक्ट ने भी दो के कॉम्प्लीमेंट गणित का उपयोग करना चुना। जैसे-जैसे IC तकनीक उन्नत हुई, x86, m68k, पावर ISA, MIPS, SPARC, ARM, इटेनियम, PA-RISC और DEC अल्फा सहित लगभग सभी प्रोसेसर में दो की कॉम्प्लीमेंट तकनीक को अपनाया गया है।

चिह्न-परिमाण
साइन-परिमाण प्रतिनिधित्व में, जिसे साइन-एंड-मैग्नीट्यूड या हस्ताक्षरित परिमाण भी कहा जाता है, एक हस्ताक्षरित संख्या को साइन बिट के लिए संख्या के संकेत के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है (अक्सर सबसे महत्वपूर्ण बिट, ए के लिए 0 पर सेट होता है) सकारात्मक संख्या और ऋणात्मक संख्या के लिए 1), और शेष बिट्स के लिए संख्या का परिमाण (या निरपेक्ष मान)। उदाहरण के लिए, आठ-बिट बाइट में, केवल सात बिट परिमाण का प्रतिनिधित्व करते हैं, जो 0000000 (0) से 1111111 (127) तक हो सकते हैं। इस प्रकार साइन बिट (आठवां बिट) जोड़ने के बाद −12710 to +12710 तक की संख्याओं को दर्शाया जा सकता है। उदाहरण के लिए, आठ-बिट बाइट में एन्कोड किया गया −4310 10101011 है जबकि  4310 00101011 है। साइन-परिमाण प्रतिनिधित्व का उपयोग करने के अनेक परिणाम होते हैं जो उन्हें प्रयुक्त करने के लिए और अधिक काम्प्लेक्स बनाते हैं:
 * 1) शून्य को दर्शाने के दो विधि हैं, 00000000 (0) और 10000000 (−0).
 * 2) जोड़ और घटाव के लिए साइन बिट के आधार पर अलग-अलग व्यवहार की आवश्यकता होती है, जबकि  इसका कॉम्प्लीमेंट साइन बिट को अनदेखा कर सकता है और केवल एंड-अराउंड कैरी कर सकता है, और दो का कॉम्प्लीमेंट साइन बिट को अनदेखा कर सकता है और अतिप्रवाह व्यवहार पर निर्भर कर सकता है।
 * 3) तुलना के लिए साइन बिट का निरीक्षण करना भी आवश्यक है, जबकि दो के कॉम्प्लीमेंट में, कोई सरलता  से दो संख्याओं को घटा सकता है, और जांच कर सकता है कि परिणाम धनात्मक या ऋणात्मक है।
 * 4) दो के कॉम्प्लीमेंट के स्थिति  में न्यूनतम ऋणात्मक संख्या -128 के अतिरिक्त -127 है।

यह दृष्टिकोण किसी चिह्न को दिखाने के सामान्य विधि (संख्या के परिमाण के आगे + या − लगाने) से सीधे तुलनीय है। कुछ प्रारंभिक बाइनरी कंप्यूटर (उदाहरण के लिए, आईबीएम 7090) इस प्रतिनिधित्व का उपयोग करते हैं, संभवतः सामान्य उपयोग के साथ इसके प्राकृतिक संबंध के कारण। फ़्लोटिंग-पॉइंट अंकगणित या फ़्लोटिंग-पॉइंट मानों में महत्व का प्रतिनिधित्व करने का संकेत-परिमाण सबसे समान्य विधि है

वन' कॉम्प्लीमेंट
लोगों के कॉम्प्लीमेंट प्रतिनिधित्व में, ऋणात्मक संख्या को धनात्मक  संख्या के बिटवाइज़ NOT (अर्थात पूरक) के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है। चिह्न-परिमाण प्रतिनिधित्व की तरह, किसी के कॉम्प्लीमेंट में 0: 00000000 (+0) और 11111111 (−0) के दो प्रतिनिधित्व होते हैं।

उदाहरण के तौर पर, 00101011 (4310) का कॉम्प्लीमेंट रूप 11010100 (−4310). हो जाता है। किसी के कॉम्प्लीमेंट का उपयोग करके हस्ताक्षरित संख्याओं की श्रेणी को −(2N−1 − 1) to (2N−1 − 1) और ±0 द्वारा दर्शाया जाता है। एक पारंपरिक आठ-बिट बाइट −12710 to +12710 है और शून्य या तो 00000000 (+0) या 11111111 (−0) है।

इस प्रणाली में प्रदर्शित दो संख्याओं को जोड़ने के लिए, एक पारंपरिक बाइनरी जोड़ किया जाता है, लेकिन फिर एंड-अराउंड कैरी करना आवश्यक होता है: अथार्त, किसी भी परिणामी कैरी को परिणामी योग में वापस जोड़ें। यह देखने के लिए कि यह क्यों आवश्यक है, निम्नलिखित उदाहरण पर विचार करें जिसमें −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 से सर्वांगसमता संबंध है। इसलिए,  ही ऋणात्मक मान के  के कॉम्प्लीमेंट और दो के कॉम्प्लीमेंट निरूपण में  का अंतर होगा।

ध्यान दें कि किसी ऋणात्मक संख्या का कॉम्प्लीमेंट प्रतिनिधित्व चिह्न-परिमाण प्रतिनिधित्व से केवल बिटवाइज़ परिमाण को कॉम्प्लीमेंट करके (पहले के बाद सभी बिट्स को विपरीत करके) प्राप्त किया जा सकता है। उदाहरण के लिए, दशमलव संख्या −125 अपने चिह्न-परिमाण प्रतिनिधित्व 111111101 के साथ किसी के कॉम्प्लीमेंट रूप में 10000010 के रूप में दर्शाया जा सकता है।

दो कॉम्प्लीमेंट
दोनों के कॉम्प्लीमेंट प्रतिनिधित्व में, ऋणात्मक संख्या को धनात्मक  संख्या प्लस वन के बिटवाइज़ NOT (अथार्त  पूरक) के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है, अर्थात लोगों के कॉम्प्लीमेंट प्लस वन के लिए यह 0 के एकाधिक अभ्यावेदन की समस्याओं और उनके कॉम्प्लीमेंट निरूपण को अंत तक ले जाने की आवश्यकता को दूर करता है। इसे अहस्ताक्षरित पूर्णांक में इसके मान के व्युत्क्रम का प्रतिनिधित्व करने वाला सबसे महत्वपूर्ण बिट भी माना जा सकता है; जिससे यह 8-बिट अहस्ताक्षरित बाइट में, सबसे महत्वपूर्ण बिट 128वें स्थान का प्रतिनिधित्व करता है, जहां दो के कॉम्प्लीमेंट में वह बिट -128 का प्रतिनिधित्व करेगा।

दो के पूरक में, केवल एक शून्य होता है, जिसे 00000000 के रूप में दर्शाया जाता है। किसी संख्या को अस्वीकारना (चाहे ऋणात्मक हो या धनात्मक) सभी बिट्स को विपरीत करके और फिर उस परिणाम में एक जोड़कर किया जाता है। यह वास्तव में सभी पूर्णांक मॉड्यूलो 2N: $$\mathbb{Z}/2^N\mathbb{Z}$$ पर वलय संरचना को दर्शाता है। दो-पूरक पूर्णांकों की एक जोड़ी को जोड़ना अहस्ताक्षरित संख्याओं की एक जोड़ी को जोड़ने के समान है (अतिप्रवाह का पता लगाने के अलावा, यदि ऐसा किया जाता है); यही बात घटाव के लिए भी सच है और यहां तक कि किसी उत्पाद के एन न्यूनतम महत्वपूर्ण बिट्स (गुणन का मूल्य) के लिए भी सच है। उदाहरण के लिए, 127 और −128 का दो-पूरक जोड़ 127 और 128 के अहस्ताक्षरित जोड़ के समान बाइनरी बिट पैटर्न देता है, जैसा कि 8-बिट दो की पूरक तालिका से देखा जा सकता है।

दो के कॉम्प्लीमेंट में किसी संख्या का निषेधन प्राप्त करने की सरल विधि इस प्रकार है:

विधि दो:


 * 1) संख्या के माध्यम से सभी बिट्स को विपरीत करें
 * 2) जोड़ें

उदाहरण: +2 के लिए, जो बाइनरी में 00000010 है (~ वर्ण C (प्रोग्रामिंग लैंग्वेज) बिटवाइज़ ऑपरेटर नहीं है, इसलिए ~X का अर्थ है X में सभी बिट्स को विपरीत करना है):


 * 1) ~00000010 → 11111101
 * 2) 11111101 + 1 → 11111110 (दो के कॉम्प्लीमेंट में −2)

ऑफ़सेट बाइनरी
ऑफसेट बाइनरी प्रतिनिधित्व में, जिसे अतिरिक्त-के या बायस्ड भी कहा जाता है, एक हस्ताक्षरित संख्या को अहस्ताक्षरित संख्या प्लस के के अनुरूप बिट पैटर्न द्वारा दर्शाया जाता है, जिसमें के बायसिंग मान या ऑफसेट होता है। इस प्रकार 0 को K द्वारा दर्शाया जाता है, और −K को पूर्ण-शून्य बिट पैटर्न द्वारा दर्शाया जाता है। इसे उपरोक्त दो-पूरक के एक मामूली संशोधन और सामान्यीकरण के रूप में देखा जा सकता है, जो वस्तुतः ऋणात्मक सबसे महत्वपूर्ण बिट के साथ अतिरिक्त-(2N −1) प्रतिनिधित्व है।

पक्षपातपूर्ण निरूपण अब मुख्य रूप से फ़्लोटिंग-पॉइंट संख्याओं के प्रतिपादक के लिए उपयोग किया जाता है। आईईईई 754 फ़्लोटिंग-पॉइंट मानक एकल-सटीक (32-बिट) संख्या के घातांक फ़ील्ड को 8-बिट अतिरिक्त-127 फ़ील्ड के रूप में परिभाषित करता है। डबल-प्रिसिजन (64-बिट) एक्सपोनेंट फ़ील्ड 11-बिट अतिरिक्त-1023 फ़ील्ड है; प्रतिपादक पूर्वाग्रह देखें. इसका उपयोग बाइनरी-कोडित दशमलव संख्याओं के लिए अतिरिक्त-3 के रूप में भी किया जाता था।

आधार −2
आधार -2 प्रतिनिधित्व में, एक हस्ताक्षरित संख्या को आधार -2 के साथ एक संख्या प्रणाली का उपयोग करके दर्शाया जाता है। पारंपरिक बाइनरी संख्या प्रणालियों में, आधार, या मूलांक, 2 है; इस प्रकार सबसे दाहिना बिट 20,का प्रतिनिधित्व करता है, अगला बिट 21 का प्रतिनिधित्व करता है, अगला बिट 22 का प्रतिनिधित्व करता है, और इसी तरह चूँकि, आधार -2 के साथ एक द्विआधारी संख्या प्रणाली भी संभव है। सबसे दाहिना बिट (−2)0 = +1 दर्शाता है, अगला बिट (−2)1 = −2, दर्शाता है, अगला बिट  (−2)2 = +4 दर्शाता है और इसी तरह, वैकल्पिक चिह्न के साथ। जिन संख्याओं को चार बिट्स के साथ दर्शाया जा सकता है, उन्हें नीचे तुलना तालिका में दिखाया गया है।

प्रदर्शित की जा सकने वाली संख्याओं की सीमा असममित है। यदि शब्द में बिट्स की संख्या सम है, तो प्रदर्शित की जा सकने वाली सबसे बड़ी ऋणात्मक संख्या का परिमाण, प्रदर्शित की जा सकने वाली सबसे बड़ी धनात्मक संख्या से दोगुना बड़ा होता है, और यदि शब्द में विषम संख्या में बिट्स हों तो इसके विपरीत होता है।

तुलना तालिका
निम्न तालिका धनात्मक और ऋणात्मक पूर्णांक दिखाती है जिन्हें चार बिट्स का उपयोग करके दर्शाया जा सकता है।

वही तालिका, जैसा कि इन बाइनरी बिट्स से देखा गया है, प्रतिनिधित्व प्रणाली द्वारा व्याख्या की गई संख्या क्या है:

अन्य प्रणालियाँ
गूगल का प्रोटोकॉल बफ़र्स ज़िग-ज़ैग एन्कोडिंग संकेत-परिमाण के समान प्रणाली है, किंतु संकेत का प्रतिनिधित्व करने के लिए  लीस्ट सिग्निफिकेन्ट बिट का उपयोग करता है और इसमें शून्य का एकल प्रतिनिधित्व होता है। यह गैर-ऋणात्मक (अहस्ताक्षरित) पूर्णांकों के लिए इच्छित वेरिएबल -लंबाई मात्रा एन्कोडिंग को हस्ताक्षरित पूर्णांकों के लिए कुशलतापूर्वक उपयोग करने की अनुमति देता है।

उन्नत वीडियो कोडिंग में समान विधि का उपयोग किया जाता है| उन्नत वीडियो कोडिंग/एच.264 और उच्च दक्षता वीडियो कोडिंग|उच्च दक्षता वीडियो कोडिंग/एच.265 वीडियो संपीड़न मानकों को एक्सपोनेंशियल-गोलोम्ब कोडिंग या ऋणात्मक संख्याओं तक विस्तार या एक्सपेंडेंशियल-गोलोम्ब का विस्तार करें ऋणात्मक संख्याओं को कोडिंग करना है। उस विस्तार में, सबसे कम महत्वपूर्ण बिट लगभग  साइन बिट है; शून्य में सभी ऋणात्मक संख्याओं के समान न्यूनतम महत्वपूर्ण बिट (0) होता है। इस विकल्प के परिणामस्वरूप सबसे बड़ी परिमाण प्रतिनिधित्व योग्य धनात्मक  संख्या सबसे बड़ी परिमाण ऋणात्मक संख्या से  अधिक होती है, दो के कॉम्प्लीमेंट या प्रोटोकॉल बफ़र्स ज़िग-ज़ैग एन्कोडिंग के विपरीत है।

अन्य दृष्टिकोण यह है कि प्रत्येक संख्यात्मक अंक को चिह्न दिया जाए, जिससे हस्ताक्षरित अंक का प्रतिनिधित्व प्राप्त हो। उदाहरण के लिए, 1726 में, जॉन कोल्सन ने छोटी संख्याओं, अंकों 1, 2, 3, 4 और 5 तक अभिव्यक्तियों को कम करने की वकालत की। 1840 में, ऑगस्टिन कॉची ने भी गणना में त्रुटियों को कम करने के लिए ऐसी संशोधित दशमलव संख्याओं को प्राथमिकता दी थी।

यह भी देखें

 * संतुलित टर्नरी
 * बाइनरी-कोडित दशमलव
 * कंप्यूटर नंबर प्रारूप
 * कॉम्प्लीमेंट की विधि
 * हस्ताक्षर

संदर्भ

 * Ivan Flores, The Logic of Computer Arithmetic, Prentice-Hall (1963)
 * Israel Koren, Computer Arithmetic Algorithms, A.K. Peters (2002), ISBN 1-56881-160-8

Representació de nombres amb signe Dvojková soustava Système binaire