दो का अनुपूरण: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 47: Line 47:
दो का अनुपूरण, अनुपूरण [[पूरक की विधि|की विधि]] का उदाहरण है। नाम में 'दो' उस शब्द को संदर्भित करता है, जो {{mvar|N}}-बिट प्रणाली में पूर्ण रूप से विस्तारित है, वस्तुतः "{{mvar|N}} की घात के लिए दो" है - {{math|2<sup>''N''</sup>}} (एकमात्र स्थिति जहां इस शब्द में वस्तुतः 'दो' का उत्पादन किया जाएगा) {{mvar|N}} = 1, इसलिए 1-बिट प्रणाली के लिए, परन्तु इनमें चिह्न और शून्य दोनों के लिए क्षमता नहीं है), और यह मात्र यह पूर्ण शब्द है जिसके संबंध में अनुपूरण की गणना की जाती है। इस प्रकार, {{mvar|N}}-बिट संख्या के दो के अनुपूरण की यथार्थ परिभाषा {{math|2<sup>''N''</sup>}} के संबंध में उस संख्या का अनुपूरण है।
दो का अनुपूरण, अनुपूरण [[पूरक की विधि|की विधि]] का उदाहरण है। नाम में 'दो' उस शब्द को संदर्भित करता है, जो {{mvar|N}}-बिट प्रणाली में पूर्ण रूप से विस्तारित है, वस्तुतः "{{mvar|N}} की घात के लिए दो" है - {{math|2<sup>''N''</sup>}} (एकमात्र स्थिति जहां इस शब्द में वस्तुतः 'दो' का उत्पादन किया जाएगा) {{mvar|N}} = 1, इसलिए 1-बिट प्रणाली के लिए, परन्तु इनमें चिह्न और शून्य दोनों के लिए क्षमता नहीं है), और यह मात्र यह पूर्ण शब्द है जिसके संबंध में अनुपूरण की गणना की जाती है। इस प्रकार, {{mvar|N}}-बिट संख्या के दो के अनुपूरण की यथार्थ परिभाषा {{math|2<sup>''N''</sup>}} के संबंध में उस संख्या का अनुपूरण है।


{{math|2<sup>N</sup>}} के संबंध में किसी संख्या का पूरक होने की परिभाषित गुण बस यह है कि मूल उत्पादन के साथ इस संख्या का योग {{math|2<sup>''N''</sup>}} है। उदाहरण के लिए, तीन-बिट तक की संख्याओं के साथ द्विआधारी का उपयोग करना (इसलिए {{math|''N'' {{=}} 3}} और {{math|2<sup>''N''</sup> {{=}} 2<sup>3</sup> {{=}} 8 {{=}} 1000<sub>2</sub>}}, जहाँ '''''<nowiki/>'<sub>2</sub>'''''' द्विआधारी प्रतिनिधित्व को इंगित करता है), संख्या 3({{math|011<sub>2</sub>}}) के लिए दो का अनुपूरण 5({{math|101<sub>2</sub>}}) है ), क्योंकि मूल को जोड़ने पर यह {{math|2<sup>3</sup> {{=}} 1000<sub>2</sub> {{=}} 011<sub>2</sub> + 101<sub>2</sub>}} प्राप्त होता है। जहां इस पत्राचार को ऋणात्मक संख्याओं का प्रतिनिधित्व करने के लिए नियोजित किया जाता है, इसका प्रभावी रूप से अर्थ है, दशमलव अंकों और संख्या-स्थान के साथ सादृश्य का उपयोग करके मात्र 0 से 7 तक आठ गैर-ऋणात्मक संख्याओं की अनुमति देना, संख्या-स्थान को दो समूहों में विभाजित करना: पहले चार संख्याएँ 0 1 2 3 वही रहती हैं, जबकि शेष चार ऋणात्मक संख्याओं को एन्कोड करते हैं, अपने बढ़ते क्रम को बनाए रखते हैं, जिससे 4 एनकोड -4, 5 एनकोड -3, 6 एनकोड -2 और 7 एनकोड -1 बनाते हैं। यद्यपि, द्विआधारी प्रतिनिधित्व की अतिरिक्त उपयोगिता है, क्योंकि सबसे महत्वपूर्ण बिट समूह (और चिह्न) को भी इंगित करता है: यह गैर-ऋणात्मक के पहले समूह के लिए 0 है, और ऋणात्मक के दूसरे समूह के लिए 1 है। दाईं ओर दी गई तालिकाएँ इस गुण को दर्शाती हैं।
{{math|2<sup>N</sup>}} के संबंध में किसी संख्या का अनुपूरण होने की परिभाषित गुण बस यह है कि मूल उत्पादन के साथ इस संख्या का योग {{math|2<sup>''N''</sup>}} है। उदाहरण के लिए, तीन-बिट तक की संख्याओं के साथ द्विआधारी का उपयोग करना (इसलिए {{math|''N'' {{=}} 3}} और {{math|2<sup>''N''</sup> {{=}} 2<sup>3</sup> {{=}} 8 {{=}} 1000<sub>2</sub>}}, जहाँ '''''<nowiki/>'<sub>2</sub>'''''' द्विआधारी प्रतिनिधित्व को इंगित करता है), संख्या 3({{math|011<sub>2</sub>}}) के लिए दो का अनुपूरण 5({{math|101<sub>2</sub>}}) है), क्योंकि मूल को जोड़ने पर यह {{math|2<sup>3</sup> {{=}} 1000<sub>2</sub> {{=}} 011<sub>2</sub> + 101<sub>2</sub>}} प्राप्त होता है। जहां इस पत्राचार को ऋणात्मक संख्याओं का प्रतिनिधित्व करने के लिए नियोजित किया जाता है, इसका प्रभावी रूप से अर्थ है, दशमलव अंकों और संख्या-स्थान के साथ सादृश्य का उपयोग करके मात्र 0 से 7 तक आठ गैर-ऋणात्मक संख्याओं की अनुमति देना, संख्या-स्थान को दो समूहों में विभाजित करना: पहले चार संख्याएँ 0 1 2 3 वही रहती हैं, जबकि शेष चार ऋणात्मक संख्याओं को n्कोड करते हैं, अपने बढ़ते क्रम को बनाए रखते हैं, जिससे 4 nकोड -4, 5 nकोड -3, 6 nकोड -2 और 7 nकोड -1 बनाते हैं। यद्यपि, द्विआधारी प्रतिनिधित्व की अतिरिक्त उपयोगिता है, क्योंकि सबसे महत्वपूर्ण बिट समूह (और चिह्न) को भी इंगित करता है: यह गैर-ऋणात्मक के पहले समूह के लिए 0 है, और ऋणात्मक के दूसरे समूह के लिए 1 है। दाईं ओर दी गई तालिकाएँ इस गुण को दर्शाती हैं।
{|class="wikitable sortable floatright" style="text-align: center;"
{|class="wikitable sortable floatright" style="text-align: center;"
|+ तीन-बिट पूर्णांक
|+ तीन-बिट पूर्णांक
Line 134: Line 134:
| −1
| −1
|}
|}
किसी धनात्मक संख्या के द्विआधारी दो के पूरक की गणना का अर्थ अनिवार्य रूप से संख्या को {{math|2<sup>''N''</sup>}} से घटाना है। परन्तु जैसा कि तीन-बिट उदाहरण और चार-बिट {{math|1000<sub>2</sub>}} ({{math|2<sup>3</sup>}}) के लिए देखा जा सकता है, जो संख्या {{math|2<sup>''N''</sup>}} स्वयं {{mvar|''N''}} बिट तक सीमित प्रणाली में प्रतिनिधित्व योग्य नहीं होगी, क्योंकि यह {{mvar|''N''}} बिट स्थान ठीक बाहर है (संख्या है फिर भी {{mvar|''N''}}-बिट प्रणाली में "दो के पूरक" का संदर्भ बिंदु)। इस कारण से, अधिकतम {{mvar|''N''}}-बिट वाले प्रणाली को घटाव को दो संक्रियकों में तोड़ना होगा: पहले {{mvar|''N''}}-बिट प्रणाली में अधिकतम संख्या से घटाना, जो कि {{math|2<sup>''N''</sup>-1}} है (द्विआधारी में यह शब्द वस्तुतः एक साधारण संख्या है जिसमें 'सभी 1' सम्मिलित हैं, और इसमें से घटाव संख्या में सभी बिट को व्युत्क्रमित करके किया जा सकता है जिसे बिटवाइज़ नॉट संक्रिया के रूप में भी जाना जाता है) और फिर एक को जोड़ना है। संयोग से, को जोड़ने से पहले उस मध्यवर्ती संख्या का उपयोग कंप्यूटर विज्ञान में चिन्हित संख्या प्रतिनिधित्व की अन्य विधि के रूप में भी किया जाता है और इसे एकल अनुपूरण कहा जाता है (यह नाम इसलिए दिया गया है क्योंकि ऐसी संख्या को मूल के साथ जोड़ने पर 'सभी 1' मिलते हैं)।
किसी धनात्मक संख्या के द्विआधारी दो के अनुपूरण की गणना का अर्थ अनिवार्य रूप से संख्या को {{math|2<sup>''N''</sup>}} से घटाना है। परन्तु जैसा कि तीन-बिट उदाहरण और चार-बिट {{math|1000<sub>2</sub>}} ({{math|2<sup>3</sup>}}) के लिए देखा जा सकता है, जो संख्या {{math|2<sup>''N''</sup>}} स्वयं {{mvar|''N''}} बिट तक सीमित प्रणाली में प्रतिनिधित्व योग्य नहीं होगी, क्योंकि यह {{mvar|''N''}} बिट स्थान ठीक बाहर है (संख्या है फिर भी {{mvar|''N''}}-बिट प्रणाली में "दो के अनुपूरण" का संदर्भ बिंदु)। इस कारण से, अधिकतम {{mvar|''N''}}-बिट वाले प्रणाली को घटाव को दो संक्रियकों में तोड़ना होगा: पहले {{mvar|''N''}}-बिट प्रणाली में अधिकतम संख्या से घटाना, जो कि {{math|2<sup>''N''</sup>-1}} है (द्विआधारी में यह शब्द वस्तुतः एक साधारण संख्या है जिसमें 'सभी 1' सम्मिलित हैं, और इसमें से घटाव संख्या में सभी बिट को व्युत्क्रमित करके किया जा सकता है जिसे बिटवाइज़ नॉट संक्रिया के रूप में भी जाना जाता है) और फिर एक को जोड़ना है। संयोग से, को जोड़ने से पहले उस मध्यवर्ती संख्या का उपयोग कंप्यूटर विज्ञान में चिन्हित संख्या प्रतिनिधित्व की अन्य विधि के रूप में भी किया जाता है और इसे एकल अनुपूरण कहा जाता है (यह नाम इसलिए दिया गया है क्योंकि ऐसी संख्या को मूल के साथ जोड़ने पर 'सभी 1' मिलते हैं)।


चिन्हित संख्याओं (उदाहरण के लिए, लोगों के अनुपूरण) का प्रतिनिधित्व करने के लिए अन्य प्रणालियों की तुलना में, दोनों के अनुपूरण का लाभ यह है कि योग, घटाव और [[गुणा]] के मौलिक अंकगणितीय संचालन अचिन्हित द्विआधारी संख्याओं के समान हैं (जब तक इनपुट का प्रतिनिधित्व किया जाता है) आउटपुट के समान बिट की संख्या में, और उन बिट से परे किसी भी पूर्णांक अतिप्रवाह को परिणाम से हटा दिया जाता है)। यह गुण प्रणाली को लागू करना सरल बनाता है, विशेषकर उच्च-परिशुद्धता अंकगणित के लिए। इसके अतिरिक्त, के अनुपूरण प्रणाली के विपरीत, दो के अनुपूरण में चिन्हित शून्य के लिए कोई प्रतिनिधित्व नहीं है, और इस प्रकार इससे संबंधित जटिलताओं का सामना नहीं करना पड़ता है। अन्यथा, दोनों योजनाओं में वांछित गुण है कि पूर्णांक के चिह्न को उसके द्विआधारी प्रतिनिधित्व के अनुपूरण को लेकर व्युत्क्रमित किया जा सकता है, परन्तु दो के घटक में अपवाद है - सबसे कम ऋणात्मक, जैसा कि तालिकाओं में देखा जा सकता है।<ref>{{cite book |author1=David J. Lilja |author2=Sachin S. Sapatnekar |title=वेरिलॉग के साथ डिजिटल कंप्यूटर सिस्टम डिजाइन करना|publisher=Cambridge University Press |date=2005 |url=https://books.google.com/books?id=5BvW0hYhxkQC&dq=%22two%27s+complement+arithmetic%22&pg=PA37}}</ref>
चिन्हित संख्याओं (उदाहरण के लिए, लोगों के अनुपूरण) का प्रतिनिधित्व करने के लिए अन्य प्रणालियों की तुलना में, दोनों के अनुपूरण का लाभ यह है कि योग, घटाव और [[गुणा]] के मौलिक अंकगणितीय संचालन अचिन्हित द्विआधारी संख्याओं के समान हैं (जब तक इनपुट का प्रतिनिधित्व किया जाता है) आउटपुट के समान बिट की संख्या में, और उन बिट से परे किसी भी पूर्णांक अतिप्रवाह को परिणाम से हटा दिया जाता है)। यह गुण प्रणाली को लागू करना सरल बनाता है, विशेषकर उच्च-परिशुद्धता अंकगणित के लिए। इसके अतिरिक्त, के अनुपूरण प्रणाली के विपरीत, दो के अनुपूरण में चिन्हित शून्य के लिए कोई प्रतिनिधित्व नहीं है, और इस प्रकार इससे संबंधित जटिलताओं का सामना नहीं करना पड़ता है। अन्यथा, दोनों योजनाओं में वांछित गुण है कि पूर्णांक के चिह्न को उसके द्विआधारी प्रतिनिधित्व के अनुपूरण को लेकर व्युत्क्रमित किया जा सकता है, परन्तु दो के घटक में अपवाद है - सबसे कम ऋणात्मक, जैसा कि तालिकाओं में देखा जा सकता है।<ref>{{cite book |author1=David J. Lilja |author2=Sachin S. Sapatnekar |title=वेरिलॉग के साथ डिजिटल कंप्यूटर सिस्टम डिजाइन करना|publisher=Cambridge University Press |date=2005 |url=https://books.google.com/books?id=5BvW0hYhxkQC&dq=%22two%27s+complement+arithmetic%22&pg=PA37}}</ref>
Line 140: Line 140:
दशमलव जोड़ने वाली मशीनों और [[यांत्रिक कैलकुलेटर|यांत्रिक कैलकुलेटरों]] में घटाव करने के लिए अनुपूरण की विधि का उपयोग लंबे समय से किया जा रहा था। [[जॉन वॉन न्यूमैन]] ने इलेक्ट्रॉनिक संग्रहित-प्रोग्राम डिजिटल कंप्यूटर के लिए ईडीवीएसी प्रस्ताव पर रिपोर्ट के 1945 के पहले ड्राफ्ट में दो के अनुपूरण द्विआधारी प्रतिनिधित्व का उपयोग करने का सुझाव दिया।<ref name = "von Neumann 1945">{{Citation | last = von Neumann | first = John | author-link = John von Neumann | title = First Draft of a Report on the EDVAC | year = 1945 | url = http://web.mit.edu/STS.035/www/PDFs/edvac.pdf | access-date = February 20, 2021 }}</ref> 1949 ईडीएसएसी, जो पहले ड्राफ्ट से प्रेरित था, ने ऋणात्मक द्विआधारी पूर्णांकों के दो अनुपूरण प्रतिनिधित्व का उपयोग किया।
दशमलव जोड़ने वाली मशीनों और [[यांत्रिक कैलकुलेटर|यांत्रिक कैलकुलेटरों]] में घटाव करने के लिए अनुपूरण की विधि का उपयोग लंबे समय से किया जा रहा था। [[जॉन वॉन न्यूमैन]] ने इलेक्ट्रॉनिक संग्रहित-प्रोग्राम डिजिटल कंप्यूटर के लिए ईडीवीएसी प्रस्ताव पर रिपोर्ट के 1945 के पहले ड्राफ्ट में दो के अनुपूरण द्विआधारी प्रतिनिधित्व का उपयोग करने का सुझाव दिया।<ref name = "von Neumann 1945">{{Citation | last = von Neumann | first = John | author-link = John von Neumann | title = First Draft of a Report on the EDVAC | year = 1945 | url = http://web.mit.edu/STS.035/www/PDFs/edvac.pdf | access-date = February 20, 2021 }}</ref> 1949 ईडीएसएसी, जो पहले ड्राफ्ट से प्रेरित था, ने ऋणात्मक द्विआधारी पूर्णांकों के दो अनुपूरण प्रतिनिधित्व का उपयोग किया।


[[CDC 6600|सीडीसी 6600]], [[LINC|एलआईएनसी]], पीडीपी-1, और यूनीवैक 1107 सहित कई प्रारंभिक कंप्यूटर, अनुपूरण संकेतन का उपयोग करते हैं; यूनीवैक 1107, यूनीवैक 1100/2200 श्रृंखला के वंशजों ने ऐसा करना जारी रखा था। [[आईबीएम]] 700/7000 श्रृंखला की वैज्ञानिक मशीनें सूचकांक रजिस्टरों को छोड़कर, जो दो के अनुपूरण हैं, संकेत/परिमाण संकेतन का उपयोग करती हैं। प्रारम्भिक व्यावसायिक कंप्यूटरों में दो अनुपूरण रूपों में ऋणात्मक मान संग्रहीत होते हैं, जिनमें [[ अंग्रेजी इलेक्ट्रिक ड्यूस |अंग्रेजी इलेक्ट्रिक ड्यूस]] (1955) और [[ डिजिटल उपकरण निगम |डिजिटल उपकरण निगम]] [[पीडीपी-11]] (1963) और [[पीडीपी-6]] (1964) सम्मिलित हैं। आईबीएम प्रणाली/360, जिसे 1964 में आईबीएम द्वारा प्रस्तुत किया गया था, जो उस समय कंप्यूटर उद्योग में प्रमुख खिलाड़ी था, इसने दो के अनुपूरण को कंप्यूटर उद्योग में सबसे व्यापक रूप से उपयोग किया जाने वाला द्विआधारी प्रतिनिधित्व बना दिया था। प्रथम मिनीकंप्यूटर, [[पीडीपी-8]], जिसे 1965 में प्रस्तुत किया गया था, 1969 [[दिनांक सामान्य नोवा]], 1970 [[पीडीपी-1]]1 और लगभग सभी बाद के मिनीकंप्यूटरों और माइक्रोकंप्यूटरों के जैसे दो अनुपूरण अंकगणित का उपयोग करता है।
[[CDC 6600|सीडीसी 6600]], [[LINC|एलआईnसी]], पीडीपी-1, और यूनीवैक 1107 सहित कई प्रारंभिक कंप्यूटर, अनुपूरण संकेतन का उपयोग करते हैं; यूनीवैक 1107, यूनीवैक 1100/2200 श्रृंखला के वंशजों ने ऐसा करना जारी रखा था। [[आईबीएम]] 700/7000 श्रृंखला की वैज्ञानिक मशीनें सूचकांक रजिस्टरों को छोड़कर, जो दो के अनुपूरण हैं, संकेत/परिमाण संकेतन का उपयोग करती हैं। प्रारम्भिक व्यावसायिक कंप्यूटरों में दो अनुपूरण रूपों में ऋणात्मक मान संग्रहीत होते हैं, जिनमें [[ अंग्रेजी इलेक्ट्रिक ड्यूस |अंग्रेजी इलेक्ट्रिक ड्यूस]] (1955) और [[ डिजिटल उपकरण निगम |डिजिटल उपकरण निगम]] [[पीडीपी-11]] (1963) और [[पीडीपी-6]] (1964) सम्मिलित हैं। आईबीएम प्रणाली/360, जिसे 1964 में आईबीएम द्वारा प्रस्तुत किया गया था, जो उस समय कंप्यूटर उद्योग में प्रमुख खिलाड़ी था, इसने दो के अनुपूरण को कंप्यूटर उद्योग में सबसे व्यापक रूप से उपयोग किया जाने वाला द्विआधारी प्रतिनिधित्व बना दिया था। प्रथम मिनीकंप्यूटर, [[पीडीपी-8]], जिसे 1965 में प्रस्तुत किया गया था, 1969 [[दिनांक सामान्य नोवा]], 1970 [[पीडीपी-1]]1 और लगभग सभी बाद के मिनीकंप्यूटरों और माइक्रोकंप्यूटरों के जैसे दो अनुपूरण अंकगणित का उपयोग करता है।


==दो के अनुपूरण प्रतिनिधित्व से परिवर्तित करना==
==दो के अनुपूरण प्रतिनिधित्व से परिवर्तित करना==
एक दो-अनुपूरण संख्या प्रणाली द्विआधारी संख्या प्रतिनिधित्व में धनात्मक और ऋणात्मक संख्याओं को एन्कोड करती है। प्रत्येक बिट का भार दो की घात है, [[सबसे महत्वपूर्ण बिट]] को छोड़कर, जिसका भार दो की संबंधित घात का ऋणात्मक है।
एक दो-अनुपूरण संख्या प्रणाली द्विआधारी संख्या प्रतिनिधित्व में धनात्मक और ऋणात्मक संख्याओं को n्कोड करती है। प्रत्येक बिट का महत्व दो की घात है, [[सबसे महत्वपूर्ण बिट]] को छोड़कर, जिसका महत्व दो की संबंधित घात का ऋणात्मक है।


{{mvar|N}}-बिट पूर्णांक <math>a_{N-1} a_{N-2} \dots a_0</math> का मान {{mvar|w}} निम्नलिखित सूत्र द्वारा दिया गया है:
{{mvar|N}}-बिट पूर्णांक <math>a_{N-1} a_{N-2} \dots a_0</math> का मान {{mvar|w}} निम्नलिखित सूत्र द्वारा दिया गया है:
:<math>w = -a_{N-1} 2^{N-1} + \sum_{i=0}^{N-2} a_i 2^i</math>
:<math>w = -a_{N-1} 2^{N-1} + \sum_{i=0}^{N-2} a_i 2^i</math>
सबसे महत्वपूर्ण बिट संख्या का चिह्न निर्धारित करता है और कभी-कभी इसे [[साइन बिट|चिन्ह बिट]] भी कहा जाता है। संकेत-और-परिमाण प्रतिनिधित्व के विपरीत, संकेत बिट का भार भी होता है {{math|−(2<sup>''N'' − 1</sup>)}} ऊपर दिखाया गया है। {{mvar|N}} बिट का उपयोग करके, {{math|−(2<sup>''N'' − 1</sup>)}} से {{math|2<sup>''N'' − 1</sup> − 1}} तक के सभी पूर्णांकों को दर्शाया जा सकता है।
सबसे महत्वपूर्ण बिट संख्या का चिह्न निर्धारित करता है और कभी-कभी इसे [[साइन बिट|चिन्ह बिट]] भी कहा जाता है। संकेत-और-परिमाण प्रतिनिधित्व के विपरीत, संकेत बिट का महत्व भी होता है {{math|−(2<sup>''N'' − 1</sup>)}} ऊपर दिखाया गया है। {{mvar|N}} बिट का उपयोग करके, {{math|−(2<sup>''N'' − 1</sup>)}} से {{math|2<sup>''N'' − 1</sup> − 1}} तक के सभी पूर्णांकों को दर्शाया जा सकता है।


==दो के अनुपूरण प्रतिनिधित्व में परिवर्तित करना==
==दो के अनुपूरण प्रतिनिधित्व में परिवर्तित करना==
दो के अनुपूरण अंकन में, गैर-ऋणात्मक संख्या को उसकी सामान्य [[बाइनरी अंक प्रणाली|द्विआधारी अंक प्रणाली]] द्वारा दर्शाया जाता है; इस मामले में, सबसे महत्वपूर्ण बिट 0 है। यद्यपि, दर्शाई गई संख्याओं की सीमा अचिन्हित द्विआधारी संख्याओं के समान नहीं है। उदाहरण के लिए, 8-बिट अचिन्हित संख्या 0 से 255 (11111111) मान का प्रतिनिधित्व कर सकती है। यद्यपि, दो की अनुपूरण 8-बिट संख्या मात्र 0 से 127 (01111111) तक गैर-ऋणात्मक पूर्णांक का प्रतिनिधित्व कर सकती है, क्योंकि '1' के रूप में सबसे महत्वपूर्ण बिट के साथ बाकी बिट संयोजन ऋणात्मक पूर्णांक -1 से -128 का प्रतिनिधित्व करते हैं।
दो के अनुपूरण अंकन में, गैर-ऋणात्मक संख्या को उसकी सामान्य [[बाइनरी अंक प्रणाली|द्विआधारी अंक प्रणाली]] द्वारा दर्शाया जाता है; इस स्थिति में, सबसे महत्वपूर्ण बिट 0 है। यद्यपि, दर्शाई गई संख्याओं की सीमा अचिन्हित द्विआधारी संख्याओं के समान नहीं है। उदाहरण के लिए, 8-बिट अचिन्हित संख्या 0 से 255 (11111111) मान का प्रतिनिधित्व कर सकती है। यद्यपि, दो की अनुपूरण 8-बिट संख्या मात्र 0 से 127 (01111111) तक गैर-ऋणात्मक पूर्णांक का प्रतिनिधित्व कर सकती है, क्योंकि '1' के रूप में सबसे महत्वपूर्ण बिट के साथ शेष बिट संयोजन ऋणात्मक पूर्णांक -1 से -128 का प्रतिनिधित्व करते हैं।


दोनों का अनुपूरण संक्रिया योगात्मक व्युत्क्रम संक्रिया है, इसलिए ऋणात्मक संख्याओं को दोनों के निरपेक्ष मान के अनुपूरण द्वारा दर्शाया जाता है।
दोनों का अनुपूरण संक्रिया योगात्मक व्युत्क्रम संक्रिया है, इसलिए ऋणात्मक संख्याओं को दोनों के निरपेक्ष मान के अनुपूरण द्वारा दर्शाया जाता है।


===अपने अनुपूरण से===
===अपने अनुपूरण से===
एक ऋणात्मक द्विआधारी संख्या के दोनों अनुपूरण प्राप्त करने के लिए, [[[[ अंश ]]वाइज़ नहीं]] संक्रिया का उपयोग करके सभी बिट को उल्टा या फ़्लिप किया जाता है; फिर 1 का मान परिणामी मान में जोड़ दिया जाता है, उस अतिप्रवाह को नजरअंदाज कर दिया जाता है जो दोनों के बीच 0 का अनुपूरण लेते समय होता है।
एक ऋणात्मक द्विआधारी संख्या के दोनों अनुपूरण प्राप्त करने के लिए, [[ अंश |बिटवाइज़]] NOT संक्रिया का उपयोग करके सभी बिट को व्युत्क्रमित या फ़्लिप किया जाता है; फिर 1 का मान परिणामी मान में योग दिया जाता है, उस अतिप्रवाह को अनदेखा कर दिया जाता है जो दोनों के बीच 0 का अनुपूरण लेते समय होता है।


उदाहरण के लिए, 1 बाइट (=8 बिट) का उपयोग करके, दशमलव संख्या 5 को दर्शाया जाता है
उदाहरण के लिए, 1 बाइट (=8 बिट) का उपयोग करके, दशमलव संख्या 5 को
:0000 0101<sub>2</sub>
:0000 0101<sub>2</sub>
सबसे महत्वपूर्ण बिट (इस मामले में सबसे बाईं ओर का बिट) 0 है, इसलिए पैटर्न गैर-ऋणात्मक मान का प्रतिनिधित्व करता है। दो-अनुपूरण संकेतन में -5 में परिवर्तित करने के लिए, सबसे पहले, सभी बिट उलटे होते हैं, यानी: 0 1 बन जाता है और 1 0 बन जाता है:
द्वारा दर्शाया जाता है, सबसे महत्वपूर्ण बिट (इस स्थिति में सबसे बाईं ओर का बिट) 0 है, इसलिए प्रतिरूप गैर-ऋणात्मक मान का प्रतिनिधित्व करता है। दो-अनुपूरण संकेतन में -5 में परिवर्तित करने के लिए, सबसे पहले, सभी बिट व्युत्क्रमित होते हैं, अर्थात: 0 1 बन जाता है और 1 0 बन जाता है:
:1111 1010<sub>2</sub>
:1111 1010<sub>2</sub>
इस बिंदु पर, प्रतिनिधित्व दशमलव मान -5 का अनुपूरण है। दोनों का अनुपूरण प्राप्त करने के लिए, परिणाम में 1 जोड़ा जाता है, जिससे:
इस बिंदु पर, प्रतिनिधित्व दशमलव मान -5 का अनुपूरण है। दोनों का अनुपूरण प्राप्त करने के लिए, परिणाम में 1 जोड़ा जाता है, जिससे:
Line 165: Line 165:
परिणाम चिन्हित द्विआधारी संख्या है जो दो-अनुपूरण रूप में दशमलव मान -5 का प्रतिनिधित्व करता है। सबसे महत्वपूर्ण बिट 1 है, इसलिए दर्शाया गया मान ऋणात्मक है।
परिणाम चिन्हित द्विआधारी संख्या है जो दो-अनुपूरण रूप में दशमलव मान -5 का प्रतिनिधित्व करता है। सबसे महत्वपूर्ण बिट 1 है, इसलिए दर्शाया गया मान ऋणात्मक है।


सबसे ऋणात्मक संख्या के विशेष मामले को छोड़कर, किसी ऋणात्मक संख्या का दोनों का अनुपूरण संगत धनात्मक मान होता है। उदाहरण के लिए, −5 (ऊपर) के बिट को उलटने पर यह मिलता है:
सबसे ऋणात्मक संख्या के विशेष स्थिति को छोड़कर, किसी ऋणात्मक संख्या का दोनों का अनुपूरण संगत धनात्मक मान होता है। उदाहरण के लिए, −5 (ऊपर) के बिट को व्युत्क्रमित करने पर यह मिलता है:
:0000 0100<sub>2</sub>
:0000 0100<sub>2</sub>
और जोड़ने पर अंतिम मान मिलता है:
और जोड़ने पर अंतिम मान मिलता है:
:0000 0101<sub>2</sub>
:0000 0101<sub>2</sub>
इसी तरह, दोनों का शून्य का अनुपूरण शून्य है: व्युत्क्रमित करने से सभी मिलते हैं, और जोड़ने से वापस शून्य में बदल जाता है (चूंकि अतिप्रवाह को नजरअंदाज कर दिया जाता है)।
इसी प्रकार, दोनों का शून्य का अनुपूरण शून्य है: व्युत्क्रमित करने से सभी मिलते हैं, और जोड़ने से वापस शून्य में बदल जाता है (चूंकि अतिप्रवाह को अनदेखा कर दिया जाता है)।


प्रतिनिधित्व करने योग्य सबसे ऋणात्मक संख्या का दोनों का अनुपूरण (उदाहरण के लिए सबसे महत्वपूर्ण बिट के रूप में और अन्य सभी बिट शून्य) ही हैं। इसलिए, 'अतिरिक्त' ऋणात्मक संख्या है जिसके लिए दो का अनुपूरण निषेधन नहीं देता है, देखें {{section link||Most negative number}} नीचे।
प्रतिनिधित्व करने योग्य सबसे ऋणात्मक संख्या का दोनों का अनुपूरण (उदाहरण के लिए सबसे महत्वपूर्ण बिट के रूप में और अन्य सभी बिट शून्य) ही हैं। इसलिए, 'अतिरिक्त' ऋणात्मक संख्या है जिसके लिए दो का अनुपूरण निषेधन नहीं देता है, अतः नीचे {{section link||सर्वाधिक ऋणात्मक संख्या}} देखें।


===2 से घटाव<sup>एन</sup>===
===2<sup>n</sup> से घटाव===


किसी संख्या और उसके इकाईयों के अनुपूरण का योग है {{mvar|N}}-सभी 1 बिट के साथ बिट शब्द, जो (एक अचिन्हित द्विआधारी संख्या के रूप में पढ़ा जाता है) {{math|2<sup>''N''</sup> − 1}}फिर इसके दोनों के अनुपूरण में संख्या जोड़ने पर परिणाम प्राप्त होता है {{mvar|N}} सबसे कम बिट को 0 और कैरी बिट 1 पर समूह किया गया है, जहां बाद वाले का भार है (इसे अचिन्हित द्विआधारी संख्या के रूप में पढ़ना) {{math|2<sup>''N''</sup>}}। अत: अचिन्हित द्विआधारी अंकगणित में दो-अनुपूरण ऋणात्मक संख्या का मान होता है {{math|''x''*}} धनात्मक का {{mvar|x}} समानता को संतुष्ट करता है {{math|1=''x''* = 2<sup>''N''</sup> − ''x''}}{{efn|For {{math|1=''x'' = 0}} we have {{math|1=2<sup>''N''</sup> − 0 = 2<sup>''N''</sup>}}, which is equivalent to {{math|1=0* = 0}} modulo {{math|2<sup>''N''</sup>}} (i.e. after restricting to {{mvar|N}} least significant bits).}}
किसी संख्या और उसके अनुपूरण का योग सभी 1 बिट्स के साथ एक {{mvar|N}}-शब्द है, जो (एक अचिन्हित द्विआधारी संख्या के रूप में पढ़ा जाता है) {{math|2<sup>''N''</sup> − 1}} है। फिर इसके दो अनुपूरण में संख्या जोड़ने से {{mvar|N}} न्यूनतम बिट्स 0 पर समूहित हो जाता है और चलन बिट 1 हो जाता है, जहां बाद वाले का महत्व {{math|2<sup>''N''</sup>}} होता है (इसे अचिन्हित द्विआधारी संख्या के रूप में पढ़ा जाता है)। अत: अचिन्हित द्विआधारी अंकगणित में धनात्मक {{mvar|x}} के दो-अनुपूरण ऋणात्मक संख्या {{math|''x''*}} का मान समानता {{math|1=''x''* = 2<sup>''N''</sup> − ''x''}} को संतुष्ट करता है।{{efn|For {{math|1=''x'' = 0}} we have {{math|1=2<sup>''N''</sup> − 0 = 2<sup>''N''</sup>}}, which is equivalent to {{math|1=0* = 0}} modulo {{math|2<sup>''N''</sup>}} (i.e. after restricting to {{mvar|N}} least significant bits).}}


उदाहरण के लिए, -5 का चार-बिट प्रतिनिधित्व खोजने के लिए (सबस्क्रिप्ट [[मूलांक]] को दर्शाते हैं):
उदाहरण के लिए, -5 का चार-बिट प्रतिनिधित्व खोजने के लिए (सबस्क्रिप्ट [[मूलांक]] को दर्शाते हैं):
:{{math|1=''x'' = 5<sub>10</sub>}} इसलिए {{math|size=120%|1=''x'' = 0101<sub>2</sub>}}
:{{math|1=''x'' = 5<sub>10</sub>}} इसलिए {{math|size=120%|1=''x'' = 0101<sub>2</sub>}}
इसलिए, साथ {{math|1=''N'' = 4}}:
इसलिए, {{math|1=''N'' = 4}} के साथ:
:{{math|1=''x''* = 2<sup>''N''</sup> − ''x'' = 2<sup>4</sup> − 5<sub>10</sub> = 16<sub>10</sub> - 5<sub>10</sub> = 10000<sub>2</sub> − 0101<sub>2</sub> = 1011<sub>2</sub>}}
:{{math|1=''x''* = 2<sup>''N''</sup> − ''x'' = 2<sup>4</sup> − 5<sub>10</sub> = 16<sub>10</sub> - 5<sub>10</sub> = 10000<sub>2</sub> − 0101<sub>2</sub> = 1011<sub>2</sub>}}
गणना पूर्ण रूप से आधार 10 में की जा सकती है, अंत में आधार 2 में परिवर्तित की जा सकती है:
गणना पूर्ण रूप से आधार 10 में की जा सकती है, अंत में आधार 2 में परिवर्तित की जा सकती है:
Line 185: Line 185:


===एलएसबी से एमएसबी की ओर कार्य करना===
===एलएसबी से एमएसबी की ओर कार्य करना===
किसी द्विआधारी संख्या को उसके दो अनुपूरण में मैन्युअल रूप से परिवर्तित करने का शॉर्टकट [[कम से कम महत्वपूर्ण बिट]] (एलएसबी) से प्रारम्भ करना है, और एलएसबी से सबसे महत्वपूर्ण बिट (एमएसबी) की ओर काम करते हुए सभी शून्यों को कॉपी करना है जब तक कि पहले 1 तक नहीं पहुंच जाता है; फिर उस 1 को कॉपी करें, और शेष सभी बिट को फ़्लिप करें (यदि प्रारंभिक संख्या संकेत-और-परिमाण प्रतिनिधित्व में थी तो MSB को 1 के रूप में छोड़ दें)। यह शॉर्टकट किसी व्यक्ति को किसी संख्या को उसके दो के अनुपूरण में बदलने की अनुमति देता है, बिना पहले उसका अनुपूरण बनाए। उदाहरण के लिए: दो के अनुपूरण प्रतिनिधित्व में, 0011 1100 का निषेधन 1100 0<u>100</u> है, जहां प्रतिलिपि संक्रिया द्वारा रेखांकित अंक अपरिवर्तित थे (जबकि शेष अंक फ़्लिप किए गए थे)।
किसी द्विआधारी संख्या को उसके दो अनुपूरण में मैन्युअल रूप से परिवर्तित करने का शॉर्टकट [[कम से कम महत्वपूर्ण बिट]] (एलएसबी) से प्रारम्भ करना है, और एलएसबी से सबसे महत्वपूर्ण बिट (एमएसबी) की ओर कार्य करते हुए सभी शून्यों को अनुकारित करना है जब तक कि पहले 1 तक नहीं पहुंच जाता है; फिर उस 1 को अनुकारित करें, और शेष सभी बिट को फ़्लिप करें (यदि प्रारंभिक संख्या संकेत-और-परिमाण प्रतिनिधित्व में थी तो एमएसबी को 1 के रूप में छोड़ दें)। यह शॉर्टकट किसी व्यक्ति को किसी संख्या को उसके दो के अनुपूरण में बदलने की अनुमति देता है, बिना पहले उसका अनुपूरण बनाए। उदाहरण के लिए: दो के अनुपूरण प्रतिनिधित्व में, 0011 1100 का निषेधन 1100 0<u>100</u> है, जहां प्रतिलिपि संक्रिया द्वारा रेखांकित अंक अपरिवर्तित थे (जबकि शेष अंक फ़्लिप किए गए थे)।


कंप्यूटर सर्किट्री में, यह विधि अनुपूरण और विधि जोड़ने से तेज़ नहीं है; दोनों तरीकों में तर्क परिवर्तन को बढ़ावा देने के लिए दाएं से बाएं तक क्रमिक रूप से काम करने की आवश्यकता होती है। किसी को अनुपूरण करने और जोड़ने की विधि को मानक कैरी लुक-फ़ॉरवर्ड योजक सर्किट द्वारा तेज़ किया जा सकता है; एमएसबी विधि की ओर एलएसबी को समान तर्क परिवर्तन द्वारा तेज किया जा सकता है।
कंप्यूटर परिपथिकी में, यह विधि अनुपूरण और विधि जोड़ने से तीव्र नहीं है; दोनों विधियों में तर्क परिवर्तन को बढ़ावा देने के लिए दाएं से बाएं तक क्रमिक रूप से कार्य करने की आवश्यकता होती है। किसी को अनुपूरण करने और जोड़ने की विधि को मानक चलन लुक-फ़ॉरवर्ड योजक परिपथ द्वारा तीव्र किया जा सकता है; एमएसबी विधि की ओर एलएसबी को समान तर्क परिवर्तन द्वारा तीव्र किया जा सकता है।


==चिन्ह एक्सटेंशन==
==चिन्ह एक्सटेंशन==
{{Main|Sign extension}}
{{Main|चिन्ह एक्सटेंशन}}


{|class="wikitable floatright" style="margin-left: 1.5em;"
{|class="wikitable floatright" style="margin-left: 1.5em;"
|+ दो के पूरक का उपयोग करके 7- और 8-बिट पूर्णांकों में चिन्ह-बिट पुनरावृत्ति
|+ दो के अनुपूरण का उपयोग करके 7- और 8-बिट पूर्णांकों में चिन्ह-बिट पुनरावृत्ति
|-
|-
!दशमलव
!दशमलव
Line 203: Line 203:
|align="right"| 42 ||align="center"| 0101010 ||align="center"| 0010 1010
|align="right"| 42 ||align="center"| 0101010 ||align="center"| 0010 1010
|}
|}
एक निश्चित संख्या में बिट वाली दो-अनुपूरण संख्या को अधिक बिट वाली संख्या में बदलते समय (उदाहरण के लिए, एक-बाइट वेरिएबल से दो-बाइट वेरिएबल में कॉपी करते समय), सबसे महत्वपूर्ण बिट को सभी अतिरिक्त बिट में दोहराया जाना चाहिए । कुछ प्रोसेसर ही निर्देश में ऐसा करते हैं; अन्य प्रोसेसरों पर, प्रासंगिक बिट या बाइट्स को समूह करने के लिए कोड के बाद कंडीशनल का उपयोग किया जाना चाहिए।
एक निश्चित संख्या में बिट वाली दो-अनुपूरण संख्या को अधिक बिट वाली संख्या में बदलते समय (उदाहरण के लिए, एक-बाइट चर से दो-बाइट चर में अनुकारित करते समय), सबसे महत्वपूर्ण बिट को सभी अतिरिक्त बिट में दोहराया जाना चाहिए। कुछ प्रोसेसर ही निर्देश में ऐसा करते हैं; अन्य प्रोसेसरों पर, प्रासंगिक बिट या बाइट को समूहित करने के लिए कोड के बाद प्रतिबंधात्मक का उपयोग किया जाना चाहिए।


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


कुछ गुणन एल्गोरिदम के लिए परिशुद्धता को स्थानांतरित करना और दोगुना करना दोनों महत्वपूर्ण हैं। ध्यान दें कि जोड़ और घटाव के विपरीत, चिन्हित और अचिन्हित संख्याओं के लिए चौड़ाई विस्तार और दायां स्थानांतरण अलग-अलग तरीके से किया जाता है।
कुछ गुणन एल्गोरिदम के लिए परिशुद्धता को स्थानांतरित करना और दोगुना करना दोनों महत्वपूर्ण हैं। ध्यान दें कि योग और घटाव के विपरीत, चिन्हित और अचिन्हित संख्याओं के लिए चौड़ाई विस्तार और दायां स्थानांतरण अलग-अलग विधि से किया जाता है।


==सबसे ऋणात्मक संख्या==
==सबसे ऋणात्मक संख्या==
Line 223: Line 223:
|colspan="2;" | {{center|{{small|Result is the same 8&nbsp;bit binary number.}}}}
|colspan="2;" | {{center|{{small|Result is the same 8&nbsp;bit binary number.}}}}
|}
|}
श्रेणी में न्यूनतम संख्या के दोनों के अनुपूरण (ऋणात्मक) लेने से संख्या को नकारने का वांछित प्रभाव नहीं होगा। उदाहरण के लिए, दोनों दूसरे के अनुपूरण हैं {{math| −128 }} आठ-बिट प्रणाली में है {{math| −128&nbsp;,}} जैसा कि #−128_example_anchor में दिखाया गया है। यद्यपि नकारने से अपेक्षित परिणाम मिलता है {{math| −128 }} है {{math| +128&nbsp;,}} का कोई प्रतिनिधित्व नहीं है {{math| +128 }} आठ बिट दो की अनुपूरण प्रणाली के साथ और इस प्रकार निषेध का प्रतिनिधित्व करना वस्तुतः असंभव है। ध्यान दें कि दोनों का अनुपूरण ही संख्या होने के कारण अतिप्रवाह स्थिति के रूप में पाया जाता है क्योंकि सबसे महत्वपूर्ण बिट में कैरी था परन्तु बाहर नहीं।
श्रेणी में न्यूनतम संख्या के दोनों के अनुपूरण (ऋणात्मक) लेने से संख्या को निष्फल का वांछित प्रभाव नहीं होगा। उदाहरण के लिए, आठ-बिट प्रणाली में {{math| −128&nbsp;}} का दोनों का अनुपूरण {{math| −128 }} हैं, जैसा कि दाईं ओर की तालिका में दिखाया गया है। यद्यपि {{math| −128 }} को निष्फल से अपेक्षित परिणाम {{math| +128&nbsp;}} है, आठ बिट दो की अनुपूरण प्रणाली के साथ{{math| +128 }} का कोई प्रतिनिधित्व नहीं है और इस प्रकार निषेध का प्रतिनिधित्व करना वास्तव में असंभव है। ध्यान दें कि दोनों का अनुपूरण ही संख्या होने के कारण अतिप्रवाह स्थिति के रूप में पाया जाता है क्योंकि सबसे महत्वपूर्ण बिट में चलन में था परन्तु बाहर नहीं।


{{citation needed span |date=August 2021 |text=This phenomenon is fundamentally about the mathematics of binary numbers, not the details of the representation as two's&nbsp;complement. |reason=This phenomenon seems to be about the details of two's complement, since one's complement binary numbers and sign-magnitude binary numbers can easily negate their most-negative number – they do not have such a 'weird number' as the minimum number.}} गणितीय रूप से, यह इस तथ्य का अनुपूरण है कि का ऋणात्मक {{math| 0 }} फिर से है {{math| 0&nbsp;}}: बिट की दी गई संख्या के लिए, {{mvar|k}}, द्विआधारी संख्या 2 की सम संख्या होती है{{sup|{{mvar|k}}}}, ऋणात्मक लेना द्विआधारी संख्याओं पर समूह क्रिया (गणित) (क्रम 2 के समूह (गणित) का) है, और चूंकि शून्य की कक्षा (समूह सिद्धांत) का क्रम 1 है, कम से कम अन्य संख्या की कक्षा होनी चाहिए कक्षाओं के क्रम को समूह के क्रम में जोड़ने के लिए क्रम 1। इस प्रकार ऋणात्मक लेने के तहत कुछ अन्य संख्या अपरिवर्तनीय होनी चाहिए (औपचारिक रूप से, कक्षा-स्टेबलाइज़र प्रमेय द्वारा)। ज्यामितीय रूप से, कोई भी देख सकता है {{mvar|k}}-बिट द्विआधारी संख्याएँ [[चक्रीय समूह]] के रूप में <math>\ \mathbb{Z} / 2^k\ ,</math> जिसे वृत्त (या ठीक से नियमित 2) के रूप में देखा जा सकता है{{sup|{{mvar|k}}}}-गॉन), और ऋणात्मक लेना प्रतिबिंब है, जो 2:0 और विपरीत बिंदु को विभाजित करने वाले क्रम के तत्वों को, या दृष्टिगत रूप से चरम और नादिर को ठीक करता है।
{{citation needed span |date=August 2021 |text=This phenomenon is fundamentally about the mathematics of binary numbers, not the details of the representation as two's&nbsp;complement. |reason=This phenomenon seems to be about the details of two's complement, since one's complement binary numbers and sign-magnitude binary numbers can easily negate their most-negative number – they do not have such a 'weird number' as the minimum number.}} गणितीय रूप से, यह इस तथ्य का अनुपूरण है कि का ऋणात्मक {{math| 0 }} फिर से है {{math| 0&nbsp;}}: बिट की दी गई संख्या के लिए, {{mvar|k}}, द्विआधारी संख्या 2 की सम संख्या होती है{{sup|{{mvar|k}}}}, ऋणात्मक लेना द्विआधारी संख्याओं पर समूह क्रिया (गणित) (क्रम 2 के समूह (गणित) का) है, और चूंकि शून्य की कक्षा (समूह सिद्धांत) का क्रम 1 है, कम से कम अन्य संख्या की कक्षा होनी चाहिए कक्षाओं के क्रम को समूह के क्रम में जोड़ने के लिए क्रम 1। इस प्रकार ऋणात्मक लेने के तहत कुछ अन्य संख्या अपरिवर्तनीय होनी चाहिए (औपचारिक रूप से, कक्षा-स्टेबलाइज़र प्रमेय द्वारा)। ज्यामितीय रूप से, कोई भी देख सकता है {{mvar|k}}-बिट द्विआधारी संख्याएँ [[चक्रीय समूह]] के रूप में <math>\ \mathbb{Z} / 2^k\ ,</math> जिसे वृत्त (या ठीक से नियमित 2) के रूप में देखा जा सकता है{{sup|{{mvar|k}}}}-गॉन), और ऋणात्मक लेना प्रतिबिंब है, जो 2:0 और विपरीत बिंदु को विभाजित करने वाले क्रम के तत्वों को, या दृष्टिगत रूप से चरम और नादिर को ठीक करता है।


सबसे ऋणात्मक संख्या की उपस्थिति अप्रत्याशित प्रोग्रामिंग बग्स को जन्म दे सकती है जहां परिणाम में अप्रत्याशित संकेत होता है, या अप्रत्याशित अतिप्रवाह अपवाद की ओर जाता है, या पूर्ण रूप से अजीब व्यवहार की ओर जाता है। उदाहरण के लिए,
सबसे ऋणात्मक संख्या की उपस्थिति अप्रत्याशित प्रोग्रामिंग बग्स को जन्म दे सकती है जहां परिणाम में अप्रत्याशित संकेत होता है, या अप्रत्याशित अतिप्रवाह अपवाद की ओर जाता है, या पूर्ण रूप से असामान्य व्यवहार की ओर जाता है। उदाहरण के लिए,
* एकात्मक निषेध संचालिका किसी अशून्य संख्या का चिह्न नहीं बदल सकती। जैसे, {{math| −(−128) &nbsp;⟼&nbsp; −128 &nbsp;}} (जहाँ{{math|⟼}} को वैसे ही पढ़ा जाता है जैसे बन जाता है)।
* एकात्मक निषेध संचालिका किसी अशून्य संख्या का चिह्न नहीं बदल सकती। जैसे, {{math| −(−128) &nbsp;⟼&nbsp; −128 &nbsp;}} (जहाँ{{math|⟼}} को वैसे ही पढ़ा जाता है जैसे बन जाता है)।


* निरपेक्ष मूल्य का कार्यान्वयन ऋणात्मक संख्या लौटा सकता है;<ref>
* निरपेक्ष मान का कार्यान्वयन ऋणात्मक संख्या लौटा सकता है;<ref>
{{cite web
{{cite web
  |title=Math
  |title=Math
Line 239: Line 239:
</ref> जैसे, {{math|&nbsp; abs(−128) &nbsp;⟼&nbsp; −128&nbsp;.}}
</ref> जैसे, {{math|&nbsp; abs(−128) &nbsp;⟼&nbsp; −128&nbsp;.}}


* इसी प्रकार, से गुणा करें {{math| −1 }} अपेक्षा के अनुरूप कार्य करने में विफल हो सकता है; जैसे, {{math| (−128) × (−1) &nbsp;⟼&nbsp; −128&nbsp;.}}
* इसी प्रकार, {{math| −1 }} से गुणा अपेक्षित रूप से कार्य करने में विफल हो सकता है; उदाहरण के लिए, {{math| (−128) × (−1) &nbsp;⟼&nbsp; −128&nbsp;.}}


*द्वारा विभाजन {{math| −1 }} अपवाद का कारण बन सकता है (जैसे कि द्वारा विभाजित करने के कारण होता है {{math| 0 }});<ref>
*{{math| −1 }} से भाग देने पर अपवाद हो सकता है (जैसा कि 0 से भाग देने पर होता है);<ref>
{{cite web
{{cite web
  |first=John |last=Regehr
  |first=John |last=Regehr
Line 249: Line 249:
  |url=https://blog.regehr.org/archives/887
  |url=https://blog.regehr.org/archives/887
}}
}}
</ref> यहां तक ​​कि शेषफल (या [[मापांक]]) की गणना भी की जाती है {{math| −1 }} इस अपवाद को ट्रिगर कर सकता है;<ref name=int32-c>
</ref> यहां तक ​​कि -1 द्वारा शेषफल (या मॉड्यूलो) की गणना भी इस अपवाद को ट्रिगर कर सकती है; उदाहरण के लिए,<ref name=int32-c>
{{cite web
{{cite web
  |first=Robert C. |last=Seacord
  |first=Robert C. |last=Seacord
Line 261: Line 261:
</ref> जैसे, {{math| (−128) ÷ (−1) &nbsp;⟼&nbsp; {{small|[{{sc|crash}}]}}&nbsp;,}} {{math| (−128) % (−1) &nbsp;⟼&nbsp; {{small|[{{sc|crash}}]}}&nbsp;.}}
</ref> जैसे, {{math| (−128) ÷ (−1) &nbsp;⟼&nbsp; {{small|[{{sc|crash}}]}}&nbsp;,}} {{math| (−128) % (−1) &nbsp;⟼&nbsp; {{small|[{{sc|crash}}]}}&nbsp;.}}


C (प्रोग्रामिंग भाषा) और [[C++]] प्रोग्रामिंग भाषाओं में, उपरोक्त व्यवहार [[अपरिभाषित व्यवहार]] हैं और न मात्र वे अजीब परिणाम दे सकते हैं, बल्कि कंपाइलर यह मानने के लिए स्वतंत्र है कि प्रोग्रामर ने यह सुनिश्चित किया है कि अपरिभाषित संख्यात्मक संचालन कभी नहीं होगा, और इससे निष्कर्ष निकालें वह धारणा।<ref name=int32-c/>यह कई अनुकूलन सक्षम करता है, परन्तु इन अपरिभाषित गणनाओं वाले कार्यक्रमों में कई अजीब बग भी पैदा करता है।
C (प्रोग्रामिंग भाषा) और [[C++]] प्रोग्रामिंग भाषाओं में, उपरोक्त व्यवहार [[अपरिभाषित व्यवहार]] हैं और न मात्र वे असामान्य परिणाम दे सकते हैं, बल्कि कंपाइलर यह मानने के लिए स्वतंत्र है कि प्रोग्रामर ने यह सुनिश्चित किया है कि अपरिभाषित संख्यात्मक संचालन कभी नहीं होगा, और उस धारणा से निष्कर्ष निकालें।<ref name=int32-c/> यह कई अनुकूलन सक्षम करता है, परन्तु इन अपरिभाषित गणनाओं वाले कार्यक्रमों में कई असामान्य बग भी उत्पन्न करता है।


दो के अनुपूरण में इस सबसे ऋणात्मक संख्या को कभी-कभी अजीब संख्या कहा जाता है, क्योंकि यह एकमात्र अपवाद है।<ref>
दो के अनुपूरण में इस सबसे ऋणात्मक संख्या को कभी-कभी असामान्य संख्या कहा जाता है, क्योंकि यह एकमात्र अपवाद है।<ref>
{{cite report
{{cite report
  |first1=Reynald |last1=Affeldt
  |first1=Reynald |last1=Affeldt
Line 285: Line 285:
  |via=Google Books
  |via=Google Books
}}
}}
</ref>
</ref> यद्यपि संख्या अपवाद है, यह नियमित दो की अनुपूरण प्रणालियों में वैध संख्या है। सभी अंकगणितीय परिचालन इसके साथ संकार्य के रूप में और (जब तक कि कोई अतिप्रवाह न हो) परिणाम के रूप में कार्य करते हैं।
यद्यपि संख्या अपवाद है, यह नियमित दो की अनुपूरण प्रणालियों में वैध संख्या है। सभी अंकगणितीय परिचालन इसके साथ ऑपरेंड के रूप में और (जब तक कि कोई अतिप्रवाह न हो) परिणाम के रूप में काम करते हैं।


==यह क्यों काम करता है==
==यह क्यों कार्य करता है==
सभी संभव का समूह दिया गया {{mvar|N}}-बिट मान, हम निचले (द्विआधारी मान द्वारा) आधे को 0 से पूर्णांक मान सकते हैं {{math|(2<sup>''N'' − 1</sup> − 1)}} समावेशी और ऊपरी भाग होना {{math|−2<sup>''N'' − 1</sup>}} से −1 समावेशी। ऊपरी आधे भाग (फिर से, द्विआधारी मान द्वारा) का उपयोग ऋणात्मक पूर्णांकों को दर्शाने के लिए किया जा सकता है {{math|−2<sup>''N'' − 1</sup>}} से −1 क्योंकि, अतिरिक्त मॉड्यूलो के तहत {{math|2<sup>''N''</sup>}} वे उन ऋणात्मक पूर्णांकों के समान ही व्यवहार करते हैं। ऐसा इसलिए कहा जा रहा है क्योंकि {{math|1= ''i'' + ''j'' mod 2<sup>''N''</sup> = ''i'' + (''j'' + 2<sup>''N''</sup>) mod 2<sup>''N''</sup>}} समूह में कोई भी मान {{math|1= { ''j'' + ''k'' 2<sup>''N''</sup> {{!}} ''k'' is an integer } }} के स्थान पर प्रयोग किया जा सकता है{{mvar|j}}<ref>{{cite web
सभी संभव {{mvar|N}}-बिट मानों के एक समूह को देखते हुए, हम निम्न (द्विआधारी मान द्वारा) अर्ध को 0 से {{math|(2<sup>''N'' − 1</sup> − 1)}} तक के पूर्णांक के रूप में निर्दिष्ट कर सकते हैं और ऊपरी अर्ध को {{math|−2<sup>''N'' − 1</sup>}} से −1 समावेशी तक के पूर्णांक के रूप में निर्दिष्ट कर सकते हैं। ऊपरी अर्ध भाग (फिर से, द्विआधारी मान द्वारा) का उपयोग{{math|−2<sup>''N'' − 1</sup>}} से −1 तक ऋणात्मक पूर्णांकों को दर्शाने के लिए किया जा सकता है, क्योंकि, अतिरिक्त मॉड्यूलो {{math|2<sup>''N''</sup>}} के अंतर्गत वे उन ऋणात्मक पूर्णांकों के समान ही व्यवहार करते हैं। कहने का तात्पर्य यह है कि क्योंकि {{math|1= ''i'' + ''j'' mod 2<sup>''N''</sup> = ''i'' + (''j'' + 2<sup>''N''</sup>) mod 2<sup>''N''</sup>}} समूह में कोई भी मान {{math|1= { ''j'' + ''k'' 2<sup>''N''</sup> {{!}} ''k'' एक पूर्णांक है } }} का उपयोग {{mvar|j}} के स्थान पर किया जा सकता है।<ref>{{cite web
  | url = http://www.cs.uwm.edu/~cs151/Bacon/Lecture/HTML/ch03s09.html
  | url = http://www.cs.uwm.edu/~cs151/Bacon/Lecture/HTML/ch03s09.html
  | title = 3.9. Two's Complement | work = Chapter 3. Data Representation
  | title = 3.9. Two's Complement | work = Chapter 3. Data Representation
Line 298: Line 297:
  | url-status=dead
  | url-status=dead
}}</ref>
}}</ref>
उदाहरण के लिए, आठ बिट के साथ, अचिन्हित बाइट्स 0 से 255 हैं। शीर्ष आधे (128 से 255) से 256 घटाने पर चिन्हित बाइट्स -128 से -1 प्राप्त होते हैं।


उस पर ध्यान देने से दो के अनुपूरण के संबंध का एहसास होता है {{math|1=256 = 255 + 1}}, और {{math|(255 − ''x'')}} का अनुपूरण है{{mvar|x}}
उदाहरण के लिए, आठ बिट के साथ, अचिन्हित बाइट 0 से 255 हैं। शीर्ष अर्ध (128 से 255) से 256 घटाने पर चिन्हित बाइट -128 से -1 प्राप्त होते हैं।
 
दो के अनुपूरण के संबंध का एहसास इस बात पर ध्यान देने से होता है कि {{math|1=256 = 255 + 1}}, और {{math|(255 − ''x'')}} {{mvar|x}} का इकाई का अनुपूरण है।


{|class="wikitable floatright" style="width:14em;"
{|class="wikitable floatright" style="width:14em;"
Line 326: Line 326:
===उदाहरण===
===उदाहरण===
:इस उपधारा में, दशमलव संख्याओं के साथ दशमलव बिंदु जोड़ा जाता है।
:इस उपधारा में, दशमलव संख्याओं के साथ दशमलव बिंदु जोड़ा जाता है।
उदाहरण के लिए, 8 बिट संख्या मात्र -128 से प्रत्येक पूर्णांक का प्रतिनिधित्व कर सकती है। से 127।, समावेशी, तब से {{math|(2<sup>8 − 1</sup> {{=}} 128.)}}{{nowrap|−95. modulo 256.}} 161 के बराबर है
उदाहरण के लिए, 8 बिट संख्या मात्र -128 से 127. प्रत्येक पूर्णांक का प्रतिनिधित्व कर सकती है, समावेशी, चूँकि {{math|(2<sup>8 − 1</sup> {{=}} 128.)}}. {{nowrap|−95. modulo 256.}} 161 के बराबर है


:−95। +256।
:−95। +256।
Line 340: Line 340:


===जोड़===
===जोड़===
दो की अनुपूरण संख्याओं को जोड़ने के लिए किसी विशेष प्रसंस्करण की आवश्यकता नहीं होती है, भले ही ऑपरेंड में विपरीत चिह्न हों; परिणाम का चिह्न स्वचालित रूप से निर्धारित होता है। उदाहरण के लिए, 15 और −5 जोड़ने पर:
दो की अनुपूरण संख्याओं को जोड़ने के लिए किसी विशेष प्रसंस्करण की आवश्यकता नहीं होती है, यद्यपि संकार्य में विपरीत चिह्न हों; परिणाम का चिह्न स्वचालित रूप से निर्धारित होता है। उदाहरण के लिए, 15 और −5 जोड़ने पर:
 
<पूर्व शैली=चौड़ाई:25em >
<पूर्व शैली=चौड़ाई:25em >
   0000 1111 (15)
   0000 1111 (15)
Line 346: Line 347:


===घटाव===
===घटाव===
कंप्यूटर सामान्यतः घटाव को लागू करने के लिए अनुपूरण की विधि का उपयोग करते हैं। घटाव के लिए अनुपूरणों का उपयोग करना ऋणात्मक संख्याओं का प्रतिनिधित्व करने के लिए अनुपूरणों का उपयोग करने से निकटता से संबंधित है, क्योंकि संयोजन ऑपरेंड और परिणामों के सभी संकेतों की अनुमति देता है; प्रत्यक्ष घटाव दो-अनुपूरण संख्याओं के साथ भी काम करता है। जोड़ के जैसे, दो के अनुपूरण का उपयोग करने का लाभ यह निर्धारित करने के लिए ऑपरेंड के संकेतों की जांच करने का उन्मूलन है कि जोड़ या घटाव की आवश्यकता है या नहीं। उदाहरण के लिए, 15 में से −5 घटाना वस्तुतः 5 से 15 जोड़ना है, परन्तु यह दो-अनुपूरण प्रतिनिधित्व द्वारा छिपा हुआ है:
कंप्यूटर सामान्यतः घटाव को लागू करने के लिए अनुपूरण की विधि का उपयोग करते हैं। घटाव के लिए अनुपूरणों का उपयोग करना ऋणात्मक संख्याओं का प्रतिनिधित्व करने के लिए अनुपूरणों का उपयोग करने से निकटता से संबंधित है, क्योंकि संयोजन संकार्य और परिणामों के सभी संकेतों की अनुमति देता है; प्रत्यक्ष घटाव दो-अनुपूरण संख्याओं के साथ भी कार्य करता है। योग के जैसे, दो के अनुपूरण का उपयोग करने का लाभ यह निर्धारित करने के लिए संकार्य के संकेतों की जांच करने का उन्मूलन है कि योग या घटाव की आवश्यकता है या नहीं। उदाहरण के लिए, 15 में से −5 घटाना वस्तुतः 5 से 15 जोड़ना है, परन्तु यह दो-अनुपूरण प्रतिनिधित्व द्वारा छिपा हुआ है:
 
<पूर्व शैली=चौड़ाई:25em >
<पूर्व शैली=चौड़ाई:25em >
   11110 000 (उधार)
   11110 000 (carry)
   0000 1111 (15)
   0000 1111 (15)
  − 1111 1011 (−5)
  − 1111 1011 (−5)


===गुणा===
===गुणा===
दो का उत्पाद {{mvar|N}}-बिट संख्या की आवश्यकता है {{math|2''N''}} बिट में सभी संभावित मान सम्मिलित हैं।<ref>Bruno Paillard. ''An Introduction To Digital Signal Processors'', Sec. 6.4.2. Génie électrique et informatique Report, Université de Sherbrooke, April 2004.</ref>
दो {{mvar|N}}-बिट संख्याओं के गुणनफल को सभी संभावित मानों को समाहित करने के लिए {{math|2''N''}} बिट की आवश्यकता होती है।<ref>Bruno Paillard. ''An Introduction To Digital Signal Processors'', Sec. 6.4.2. Génie électrique et informatique Report, Université de Sherbrooke, April 2004.</ref>
यदि दो के अनुपूरण का उपयोग करते हुए दो ऑपरेंड की यथार्थता गुणन से पहले दोगुनी हो जाती है, तो प्रत्यक्ष गुणन (उस यथार्थता से परे किसी भी अतिरिक्त बिट को छोड़कर) उचित परिणाम प्रदान करेगा।<ref>{{cite web
 
यदि दो के अनुपूरण का उपयोग करते हुए दो संकार्य की यथार्थता गुणन से पहले दोगुनी हो जाती है, तो प्रत्यक्ष गुणन (उस यथार्थता के अतिरिक्त किसी भी अतिरिक्त बिट को छोड़कर) उचित परिणाम प्रदान करेगा।<ref>{{cite web
  |url        = http://pages.cs.wisc.edu/~cs354-1/beyond354/int.mult.html
  |url        = http://pages.cs.wisc.edu/~cs354-1/beyond354/int.mult.html
  |title      = Two's Complement Multiplication
  |title      = Two's Complement Multiplication
Line 364: Line 367:
  |archive-url  = https://web.archive.org/web/20150213203512/http://pages.cs.wisc.edu/~cs354-1/beyond354/int.mult.html
  |archive-url  = https://web.archive.org/web/20150213203512/http://pages.cs.wisc.edu/~cs354-1/beyond354/int.mult.html
  |archive-date = February 13, 2015
  |archive-date = February 13, 2015
}}</ref> उदाहरण के लिए, लीजिए {{math|1=6 &times; (&minus;5) = &minus;30}}सबसे पहले, परिशुद्धता को चार बिट से आठ तक बढ़ाया जाता है। फिर आठवें बिट से आगे के बिट को हटाकर संख्याओं को गुणा किया जाता है (जैसा कि दिखाया गया है{{Mono|x}} ):
}}</ref> उदाहरण के लिए, {{math|1=6 &times; (&minus;5) = &minus;30}} लें। सबसे पहले, परिशुद्धता को चार बिट से आठ तक बढ़ाया जाता है। फिर आठवें बिट से आगे के बिट को हटाकर संख्याओं को गुणा किया जाता है (जैसा कि {{Mono|x}} द्वारा दिखाया गया है):
 
<पूर्व शैली=चौड़ाई:25em >
<पूर्व शैली=चौड़ाई:25em >
   00000110 (6)
   00000110 (6)
  * 11111011 (−5)
  * 11111011 (−5)


===तुलना (आदेश देना)===
===तुलना (क्रमण)===
[[तुलना (कंप्यूटर प्रोग्रामिंग)]] को अक्सर डमी घटाव के साथ लागू किया जाता है, जहां कंप्यूटर के [[स्थिति रजिस्टर]] में झंडे की जांच की जाती है, परन्तु मुख्य परिणाम को नजरअंदाज कर दिया जाता है। [[शून्य ध्वज]] इंगित करता है कि दो मानों की तुलना बराबर है। यदि [[ध्वज पर हस्ताक्षर करें]] और [[अतिप्रवाह ध्वज]] फ़्लैग का अनन्य-या 1 है, तो घटाव परिणाम शून्य से कम था, अन्यथा परिणाम शून्य या अधिक था। ये जाँचें अक्सर [[सशर्त शाखा]] निर्देशों में कंप्यूटर में लागू की जाती हैं।
[[तुलना (कंप्यूटर प्रोग्रामिंग)]] को प्रायः कृत्रिम घटाव के साथ लागू किया जाता है, जहां कंप्यूटर के [[स्थिति रजिस्टर]] में फ्लैग की जांच की जाती है, परन्तु मुख्य परिणाम को अनदेखा कर दिया जाता है। [[शून्य ध्वज|शून्य फ्लैग]] इंगित करता है कि दो मानों की तुलना बराबर है। यदि [[ध्वज पर हस्ताक्षर करें|फ्लैग पर]] चिन्ह और [[अतिप्रवाह ध्वज|अतिप्रवाह फ्लैग]] का अनन्य-या 1 है, तो घटाव परिणाम शून्य से कम था, अन्यथा परिणाम शून्य या अधिक था। ये जाँचें प्रायः [[सशर्त शाखा|सप्रतिबन्ध शाखा]] निर्देशों में कंप्यूटर में लागू की जाती हैं।


अचिन्हित द्विआधारी संख्याओं को सरल [[शब्दकोषीय क्रम]] द्वारा क्रमबद्ध किया जा सकता है, जहां बिट मान 0 को बिट मान 1 से कम के रूप में परिभाषित किया गया है। दो के अनुपूरण मानों के लिए, सबसे महत्वपूर्ण बिट का अर्थ व्युत्क्रमित है (यानी 1, 0 से कम है)।
अचिन्हित द्विआधारी संख्याओं को सरल [[शब्दकोषीय क्रम]] द्वारा क्रमबद्ध किया जा सकता है, जहां बिट मान 0 को बिट मान 1 से कम के रूप में परिभाषित किया गया है। दो के अनुपूरण मानों के लिए, सबसे महत्वपूर्ण बिट का अर्थ व्युत्क्रमित है (अर्थात 1, 0 से कम है)।


निम्नलिखित एल्गोरिदम (एक के लिए {{mvar|n}}-बिट दो का अनुपूरण आर्किटेक्चर) परिणाम रजिस्टर आर को −1 पर समूह करता है यदि < बी, +1 पर यदि > बी, और 0 पर यदि और बी बराबर हैं:
निम्नलिखित एल्गोरिदम (एक {{mvar|n}}-बिट दो के अनुपूरण संरचना के लिए) परिणाम रजिस्टर R को −1 पर समूह करता है यदि A < B, +1 पर यदि A > B, और 0 पर यदि A और B बराबर हैं:


<syntaxhighlight lang="pascal">
<syntaxhighlight lang="pascal">
Line 398: Line 402:
</syntaxhighlight>
</syntaxhighlight>


==दो की अनुपूरण संख्याएँ और 2-आदिक संख्याएँ==
==दो की अनुपूरण संख्याएँ और 2-एडिक संख्याएँ==
1972 में [[एमआईटी एआई लैब]] द्वारा प्रकाशित क्लासिक [[HAKMEM]] में, [[बिल गोस्पर]] ने उल्लेख किया कि किसी मशीन का आंतरिक प्रतिनिधित्व दो-अनुपूरण था या नहीं, यह दो की क्रमिक घातयों को जोड़कर निर्धारित किया जा सकता है। कल्पना की उड़ान में, उन्होंने नोट किया कि बीजगणितीय रूप से ऐसा करने के परिणाम से संकेत मिलता है कि बीजगणित मशीन (ब्रह्मांड) पर चलाया जाता है जो दो का अनुपूरण है।<ref>{{cite web |url=http://www.inwap.com/pdp10/hbaker/hakmem/hacks.html#item154 |title=प्रोग्रामिंग हैक्स|work=HAKMEM |at=ITEM 154 (Gosper)}}</ref>
1972 में [[एमआईटी एआई लैब]] द्वारा प्रकाशित क्लासिक [[HAKMEM|हकमेम]] में, [[बिल गोस्पर]] ने उल्लेख किया कि किसी मशीन का आंतरिक प्रतिनिधित्व दो-अनुपूरण था या नहीं, यह दो की क्रमिक घातों को जोड़कर निर्धारित किया जा सकता है। कल्पना की उड़ान में, उन्होंने नोट किया कि बीजगणितीय रूप से ऐसा करने के परिणाम से संकेत मिलता है कि बीजगणित मशीन (ब्रह्मांड) पर चलाया जाता है जो दो का अनुपूरण है।<ref>{{cite web |url=http://www.inwap.com/pdp10/hbaker/hakmem/hacks.html#item154 |title=प्रोग्रामिंग हैक्स|work=HAKMEM |at=ITEM 154 (Gosper)}}</ref>
गोस्पर के अंतिम निष्कर्ष को जरूरी नहीं कि गंभीरता से लिया जाए, और यह [[गणितीय मजाक]] के समान है। महत्वपूर्ण कदम है ।।।110 = ।।।111 - 1 , यानी, 2एक्स = एक्स - 1, और इस प्रकार एक्स = ।।।111 = -1। यह ऐसी विधि की परिकल्पना करता है जिसके द्वारा 1s की अनंत स्ट्रिंग को संख्या माना जाता है, जिसके लिए प्रारंभिक अंकगणित में परिमित स्थान-मूल्य अवधारणाओं के विस्तार की आवश्यकता होती है। यह या तो सभी पूर्णांकों के लिए दो-अनुपूरण अंकन के भाग के रूप में, विशिष्ट पी-एडिक संख्या|2-एडिक संख्या के रूप में, या वास्तविक संख्याओं 1 + 2 + 4 की भिन्न श्रृंखला के लिए परिभाषित सामान्यीकृत योगों में से के रूप में भी सार्थक है। + 8 + …|1 + 2 + 4 + 8 +···।<ref>For the summation of 1 + 2 + 4 + 8 + ··· without recourse to the 2-adic metric, see {{cite book |last=Hardy |first=G.H. |author-link=G. H. Hardy |title=Divergent Series |year=1949 |publisher=Clarendon Press |id={{LCC|QA295|.H29|1967}}}} (pp. 7–10)</ref> डिजिटल अंकगणित सर्किट, अनंत (2 की धनात्मक घातयों तक विस्तारित) बिट स्ट्रिंग्स के साथ संचालित करने के लिए आदर्श, दो-एडिक जोड़ और दो के अनुपूरण प्रतिनिधित्व के साथ संगत गुणन उत्पन्न करते हैं।<ref>{{cite book |title=सर्किट और नंबरों पर|last=Vuillemin |first=Jean |year=1993 |publisher=[[Digital Equipment Corp.]] |location=Paris |page=19 |url=https://hplabs.itcs.hp.com/techreports/Compaq-DEC/PRL-RR-25.pdf |access-date=2023-03-29}}, Chapter 7, especially 7.3 for multiplication.</ref> 2-एडिक [[मीट्रिक स्थान]] में द्विआधारी अंकगणितीय और बिटवाइज़ संचालन के निरंतर कार्य का क्रिप्टोग्राफी में भी कुछ उपयोग होता है।<ref>{{cite web |url=http://crypto.rsuh.ru/ |title=एबीसी स्ट्रीम सिफर|last1=Anashin|first1=Vladimir |last2=Bogdanov|first2=Andrey |last3=Kizhvatov|first3=Ilya |year=2007 |publisher=[[Russian State University for the Humanities]] |access-date=24 January 2012}}</ref>
 
गोस्पर के अंतिम निष्कर्ष को आवश्यक नहीं कि गंभीरता से लिया जाए, और यह [[गणितीय मजाक|गणितीय परिहास]] के समान है। महत्वपूर्ण चरण है ...110 = ...111 - 1, अर्थात, 2X = X - 1, और इस प्रकार X = ...111 = -1। यह ऐसी विधि की परिकल्पना करता है जिसके द्वारा 1s की अनंत स्ट्रिंग को संख्या माना जाता है, जिसके लिए प्रारंभिक अंकगणित में परिमित स्थान-मान अवधारणाओं के विस्तार की आवश्यकता होती है। यह या तो सभी पूर्णांकों के लिए दो-अनुपूरण नोटेशन के भाग के रूप में, एक विशिष्ट 2-एडिक संख्या के रूप में, या यहां तक ​​कि वास्तविक संख्याओं 1 + 2 + 4 + 8 + ··· की भिन्न श्रृंखला के लिए परिभाषित सामान्यीकृत योगों में से एक के रूप में भी सार्थक है।<ref>For the summation of 1 + 2 + 4 + 8 + ··· without recourse to the 2-adic metric, see {{cite book |last=Hardy |first=G.H. |author-link=G. H. Hardy |title=Divergent Series |year=1949 |publisher=Clarendon Press |id={{LCC|QA295|.H29|1967}}}} (pp. 7–10)</ref> डिजिटल अंकगणित परिपथ, अनंत (2 की धनात्मक घातों तक विस्तारित) बिट स्ट्रिंग के साथ संचालित करने के लिए आदर्श, दो-एडिक योग और दो के अनुपूरण प्रतिनिधित्व के साथ संगत गुणन उत्पन्न करते हैं।<ref>{{cite book |title=सर्किट और नंबरों पर|last=Vuillemin |first=Jean |year=1993 |publisher=[[Digital Equipment Corp.]] |location=Paris |page=19 |url=https://hplabs.itcs.hp.com/techreports/Compaq-DEC/PRL-RR-25.pdf |access-date=2023-03-29}}, Chapter 7, especially 7.3 for multiplication.</ref> 2-एडिक [[मीट्रिक स्थान|मिति समष्टि]] में द्विआधारी अंकगणितीय और बिटवाइज़ संचालन के निरंतर कार्य का क्रिप्टोग्राफी में भी कुछ उपयोग होता है।<ref>{{cite web |url=http://crypto.rsuh.ru/ |title=एबीसी स्ट्रीम सिफर|last1=Anashin|first1=Vladimir |last2=Bogdanov|first2=Andrey |last3=Kizhvatov|first3=Ilya |year=2007 |publisher=[[Russian State University for the Humanities]] |access-date=24 January 2012}}</ref>
== भिन्न रूपांतरण ==
== भिन्न रूपांतरण ==
किसी संख्या को भिन्नात्मक भाग के साथ परिवर्तित करने के लिए, जैसे कि ।0101, किसी को सामान्य रूपांतरण के जैसे दाएं से बाएं 1s को दशमलव में परिवर्तित करना होगा। इस उदाहरण में 0101 दशमलव में 5 के बराबर है। फ़्लोटिंग पॉइंट के बाद प्रत्येक अंक अंश का प्रतिनिधित्व करता है जहां हर 2 का गुणक है। इसलिए, प्रथम 1/2 है, दूसरा 1/4 है और इसी तरह। जैसा कि ऊपर बताया गया है, पहले से ही दशमलव मान की गणना करने के बाद, मात्र एलएसबी (एलएसबी = दाएं से प्रारम्भ) के हर का उपयोग किया जाता है। इस रूपांतरण का अंतिम परिणाम 5/16 है।
किसी संख्या को भिन्नात्मक भाग के साथ परिवर्तित करने के लिए, जैसे कि .0101, किसी को सामान्य रूपांतरण के जैसे दाएं से बाएं 1s को दशमलव में परिवर्तित करना होगा। इस उदाहरण में 0101 दशमलव में 5 के बराबर है। चल बिंदु के बाद प्रत्येक अंक अंश का प्रतिनिधित्व करता है जहां हर 2 का गुणक है। इसलिए, प्रथम 1/2 है, दूसरा 1/4 है और इसी प्रकार। जैसा कि ऊपर बताया गया है, पहले से ही दशमलव मान की गणना करने के बाद, मात्र एलएसबी (एलएसबी = दाएं से प्रारम्भ) के हर का उपयोग किया जाता है। इस रूपांतरण का अंतिम परिणाम 5/16 है।


उदाहरण के लिए, इस विधि के काम करने के लिए ।0110 का फ़्लोटिंग मान होने पर, किसी को दाईं ओर से अंतिम 0 पर विचार नहीं करना चाहिए। इसलिए, 0110 के लिए दशमलव मान की गणना करने के बजाय, हम मान 011 की गणना करते हैं, जो दशमलव में 3 है (अंत में 0 छोड़ने पर, हर 2 के साथ परिणाम 6 होता)<sup>4</sup>= 16, जो घटकर 3/8 हो जाता है)। हर 8 है, जो अंतिम परिणाम 3/8 देता है।
उदाहरण के लिए, इस विधि के कार्य करने के लिए .0110 का चल मान होने पर, किसी को दाईं ओर से अंतिम 0 पर विचार नहीं करना चाहिए। इसलिए, 0110 के लिए दशमलव मान की गणना करने के अतिरिक्त, हम मान 011 की गणना करते हैं, जो दशमलव में 3 है (अंत में 0 छोड़ने पर, परिणाम 6 होता, साथ में हर 2<sup>4</sup>= 16, जो घटकर 3/8 हो जाता है)। हर 8 है, जो अंतिम परिणाम 3/8 देता है।


==यह भी देखें==
==यह भी देखें==
*[[प्रभाग एल्गोरिथ्म]], जिसमें दो-अनुपूरण अभ्यावेदन में विभाजन को पुनर्स्थापित करना और गैर-पुनर्स्थापित करना सम्मिलित है
*[[प्रभाग एल्गोरिथ्म|प्रभाग एल्गोरिदम]], जिसमें दो-अनुपूरण अभ्यावेदन में विभाजन को पुनर्स्थापित करना और गैर-पुनर्स्थापित करना सम्मिलित है
*[[ऑफसेट बाइनरी|ऑफसमूह द्विआधारी]]
*[[ऑफसेट बाइनरी|ऑफसेट द्विआधारी]]
*पी-एडिक संख्या|पी-एडिक संख्या
*पी-एडिक संख्या
*अनुपूरण की विधि, अन्य संख्या आधारों का सामान्यीकरण, यांत्रिक कैलकुलेटर पर उपयोग किया जाता है
*अनुपूरण की विधि, अन्य संख्या आधारों का सामान्यीकरण, यांत्रिक कैलकुलेटर पर उपयोग किया जाता है



Revision as of 12:24, 18 July 2023

दो का अनुपूरण गणितीय संक्रिया है जो धनात्मक द्विआधारी संख्या को ऋणात्मक द्विआधारी संख्या में समतुल्य ऋणात्मक मान के साथ परिवर्तित करता है, जिसमें चिह्न के रूप में महानतम स्थानीय मान के साथ सबसे महत्वपूर्ण बिट या द्विआधारी अंक का उपयोग किया जाता है। यह इंगित करने के लिए कि द्विआधारी संख्या धनात्मक है या ऋणात्मक। इसका उपयोग कंप्यूटर विज्ञान में कंप्यूटर पर सबसे सामान्य चिन्हित संख्या प्रतिनिधित्व (धनात्मक, ऋणात्मक और शून्य) पूर्णांकों (कंप्यूटर विज्ञान) और अधिक सामान्यतः, निश्चित-बिंदु अंकगणितीय मानों का प्रतिनिधित्व करने की सबसे सामान्य विधि के रूप में किया जाता है।[1] जब सबसे महत्वपूर्ण बिट 1 होता है, तो संख्या को ऋणात्मक के रूप में चिन्हित किया जाता है; और जब सबसे महत्वपूर्ण बिट 0 होता है तो संख्या को धनात्मक के रूप में चिन्हित किया जाता है (see दो के पूरक निरूपण से परिवर्तन करना, नीचे)

प्रक्रिया

दो का अनुपूरण निम्न द्वारा प्राप्त किया जाता है:

  • चरण 1: समतुल्य धनात्मक संख्या से प्रारंभ करना।
  • चरण 2: सभी बिट को व्युत्क्रमित करना (या फ़्लिप करना) - प्रत्येक 0 से 1, और प्रत्येक 1 से 0 में बदलना;
  • चरण 3: किसी भी पूर्णांक अतिप्रवाह को अनदेखा करते हुए, संपूर्ण व्युत्क्रम संख्या में 1 जोड़ना। अतिप्रवाह के लिए लेखांकन परिणाम के लिए अनुचित मान उत्पन्न करेगा।

उदाहरण के लिए, द्विआधारी में दशमलव संख्या -6 की गणना करने के लिए:

  • चरण 1: दशमलव में +6 द्विआधारी में 0110 है; सबसे बायां महत्वपूर्ण बिट (प्रथम 0) चिन्ह (गणित) है। +6 110 नहीं है, क्योंकि द्विआधारी में 110 दशमलव में −2 है।
  • चरण 2: 0110 में सभी बिट को व्युत्क्रमित करें, 1001 दें।
  • चरण 3: फ़्लिप किए गए संख्या 1001 में स्थानीय मान 1 जोड़ें, जिससे 1010 मिलता है।

यह सत्यापित करने के लिए कि 1010 का वस्तुतः -6 मान है, स्थानीय मानों को साथ जोड़ें, परन्तु अंतिम गणना से चिह्न को घटाएँ। चूँकि प्रथम महत्वपूर्ण अंक संख्या चिह्न है, इसलिए उचित परिणाम प्राप्त करने के लिए इसे घटाया जाना चाहिए: 1010 = (1×−2)3) + (0×22) + (1×21) + (0×20) = 1×−8 + 0 + 1×2 + 0 = −6।

बिट: 1 0 1 0
दशमलव बिट मान: −8 4 2 1
द्विआधारी गणना: (1×−23) (0×22) (1×21) (0×20)
दशमलव गणना: 1×−8 0 1×2 0

सिद्धांत

दो का अनुपूरण, अनुपूरण की विधि का उदाहरण है। नाम में 'दो' उस शब्द को संदर्भित करता है, जो N-बिट प्रणाली में पूर्ण रूप से विस्तारित है, वस्तुतः "N की घात के लिए दो" है - 2N (एकमात्र स्थिति जहां इस शब्द में वस्तुतः 'दो' का उत्पादन किया जाएगा) N = 1, इसलिए 1-बिट प्रणाली के लिए, परन्तु इनमें चिह्न और शून्य दोनों के लिए क्षमता नहीं है), और यह मात्र यह पूर्ण शब्द है जिसके संबंध में अनुपूरण की गणना की जाती है। इस प्रकार, N-बिट संख्या के दो के अनुपूरण की यथार्थ परिभाषा 2N के संबंध में उस संख्या का अनुपूरण है।

2N के संबंध में किसी संख्या का अनुपूरण होने की परिभाषित गुण बस यह है कि मूल उत्पादन के साथ इस संख्या का योग 2N है। उदाहरण के लिए, तीन-बिट तक की संख्याओं के साथ द्विआधारी का उपयोग करना (इसलिए N = 3 और 2N = 23 = 8 = 10002, जहाँ '2' द्विआधारी प्रतिनिधित्व को इंगित करता है), संख्या 3(0112) के लिए दो का अनुपूरण 5(1012) है), क्योंकि मूल को जोड़ने पर यह 23 = 10002 = 0112 + 1012 प्राप्त होता है। जहां इस पत्राचार को ऋणात्मक संख्याओं का प्रतिनिधित्व करने के लिए नियोजित किया जाता है, इसका प्रभावी रूप से अर्थ है, दशमलव अंकों और संख्या-स्थान के साथ सादृश्य का उपयोग करके मात्र 0 से 7 तक आठ गैर-ऋणात्मक संख्याओं की अनुमति देना, संख्या-स्थान को दो समूहों में विभाजित करना: पहले चार संख्याएँ 0 1 2 3 वही रहती हैं, जबकि शेष चार ऋणात्मक संख्याओं को n्कोड करते हैं, अपने बढ़ते क्रम को बनाए रखते हैं, जिससे 4 nकोड -4, 5 nकोड -3, 6 nकोड -2 और 7 nकोड -1 बनाते हैं। यद्यपि, द्विआधारी प्रतिनिधित्व की अतिरिक्त उपयोगिता है, क्योंकि सबसे महत्वपूर्ण बिट समूह (और चिह्न) को भी इंगित करता है: यह गैर-ऋणात्मक के पहले समूह के लिए 0 है, और ऋणात्मक के दूसरे समूह के लिए 1 है। दाईं ओर दी गई तालिकाएँ इस गुण को दर्शाती हैं।

तीन-बिट पूर्णांक
बिट अचिन्हित मान चिन्हित मान

(दो का अनुपूरण)

000 0 0
001 1 1
010 2 2
011 3 3
100 4 −4
101 5 −3
110 6 −2
111 7 −1
Eight-bit integers
बिट अचिन्हित मान चिन्हित मान

(दो का अनुपूरण)

0000 0000 0 0
0000 0001 1 1
0000 0010 2 2
0111 1110 126 126
0111 1111 127 127
1000 0000 128 −128
1000 0001 129 −127
1000 0010 130 −126
1111 1110 254 −2
1111 1111 255 −1

किसी धनात्मक संख्या के द्विआधारी दो के अनुपूरण की गणना का अर्थ अनिवार्य रूप से संख्या को 2N से घटाना है। परन्तु जैसा कि तीन-बिट उदाहरण और चार-बिट 10002 (23) के लिए देखा जा सकता है, जो संख्या 2N स्वयं N बिट तक सीमित प्रणाली में प्रतिनिधित्व योग्य नहीं होगी, क्योंकि यह N बिट स्थान ठीक बाहर है (संख्या है फिर भी N-बिट प्रणाली में "दो के अनुपूरण" का संदर्भ बिंदु)। इस कारण से, अधिकतम N-बिट वाले प्रणाली को घटाव को दो संक्रियकों में तोड़ना होगा: पहले N-बिट प्रणाली में अधिकतम संख्या से घटाना, जो कि 2N-1 है (द्विआधारी में यह शब्द वस्तुतः एक साधारण संख्या है जिसमें 'सभी 1' सम्मिलित हैं, और इसमें से घटाव संख्या में सभी बिट को व्युत्क्रमित करके किया जा सकता है जिसे बिटवाइज़ नॉट संक्रिया के रूप में भी जाना जाता है) और फिर एक को जोड़ना है। संयोग से, को जोड़ने से पहले उस मध्यवर्ती संख्या का उपयोग कंप्यूटर विज्ञान में चिन्हित संख्या प्रतिनिधित्व की अन्य विधि के रूप में भी किया जाता है और इसे एकल अनुपूरण कहा जाता है (यह नाम इसलिए दिया गया है क्योंकि ऐसी संख्या को मूल के साथ जोड़ने पर 'सभी 1' मिलते हैं)।

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

इतिहास

दशमलव जोड़ने वाली मशीनों और यांत्रिक कैलकुलेटरों में घटाव करने के लिए अनुपूरण की विधि का उपयोग लंबे समय से किया जा रहा था। जॉन वॉन न्यूमैन ने इलेक्ट्रॉनिक संग्रहित-प्रोग्राम डिजिटल कंप्यूटर के लिए ईडीवीएसी प्रस्ताव पर रिपोर्ट के 1945 के पहले ड्राफ्ट में दो के अनुपूरण द्विआधारी प्रतिनिधित्व का उपयोग करने का सुझाव दिया।[3] 1949 ईडीएसएसी, जो पहले ड्राफ्ट से प्रेरित था, ने ऋणात्मक द्विआधारी पूर्णांकों के दो अनुपूरण प्रतिनिधित्व का उपयोग किया।

सीडीसी 6600, एलआईnसी, पीडीपी-1, और यूनीवैक 1107 सहित कई प्रारंभिक कंप्यूटर, अनुपूरण संकेतन का उपयोग करते हैं; यूनीवैक 1107, यूनीवैक 1100/2200 श्रृंखला के वंशजों ने ऐसा करना जारी रखा था। आईबीएम 700/7000 श्रृंखला की वैज्ञानिक मशीनें सूचकांक रजिस्टरों को छोड़कर, जो दो के अनुपूरण हैं, संकेत/परिमाण संकेतन का उपयोग करती हैं। प्रारम्भिक व्यावसायिक कंप्यूटरों में दो अनुपूरण रूपों में ऋणात्मक मान संग्रहीत होते हैं, जिनमें अंग्रेजी इलेक्ट्रिक ड्यूस (1955) और डिजिटल उपकरण निगम पीडीपी-11 (1963) और पीडीपी-6 (1964) सम्मिलित हैं। आईबीएम प्रणाली/360, जिसे 1964 में आईबीएम द्वारा प्रस्तुत किया गया था, जो उस समय कंप्यूटर उद्योग में प्रमुख खिलाड़ी था, इसने दो के अनुपूरण को कंप्यूटर उद्योग में सबसे व्यापक रूप से उपयोग किया जाने वाला द्विआधारी प्रतिनिधित्व बना दिया था। प्रथम मिनीकंप्यूटर, पीडीपी-8, जिसे 1965 में प्रस्तुत किया गया था, 1969 दिनांक सामान्य नोवा, 1970 पीडीपी-11 और लगभग सभी बाद के मिनीकंप्यूटरों और माइक्रोकंप्यूटरों के जैसे दो अनुपूरण अंकगणित का उपयोग करता है।

दो के अनुपूरण प्रतिनिधित्व से परिवर्तित करना

एक दो-अनुपूरण संख्या प्रणाली द्विआधारी संख्या प्रतिनिधित्व में धनात्मक और ऋणात्मक संख्याओं को n्कोड करती है। प्रत्येक बिट का महत्व दो की घात है, सबसे महत्वपूर्ण बिट को छोड़कर, जिसका महत्व दो की संबंधित घात का ऋणात्मक है।

N-बिट पूर्णांक का मान w निम्नलिखित सूत्र द्वारा दिया गया है:

सबसे महत्वपूर्ण बिट संख्या का चिह्न निर्धारित करता है और कभी-कभी इसे चिन्ह बिट भी कहा जाता है। संकेत-और-परिमाण प्रतिनिधित्व के विपरीत, संकेत बिट का महत्व भी होता है −(2N − 1) ऊपर दिखाया गया है। N बिट का उपयोग करके, −(2N − 1) से 2N − 1 − 1 तक के सभी पूर्णांकों को दर्शाया जा सकता है।

दो के अनुपूरण प्रतिनिधित्व में परिवर्तित करना

दो के अनुपूरण अंकन में, गैर-ऋणात्मक संख्या को उसकी सामान्य द्विआधारी अंक प्रणाली द्वारा दर्शाया जाता है; इस स्थिति में, सबसे महत्वपूर्ण बिट 0 है। यद्यपि, दर्शाई गई संख्याओं की सीमा अचिन्हित द्विआधारी संख्याओं के समान नहीं है। उदाहरण के लिए, 8-बिट अचिन्हित संख्या 0 से 255 (11111111) मान का प्रतिनिधित्व कर सकती है। यद्यपि, दो की अनुपूरण 8-बिट संख्या मात्र 0 से 127 (01111111) तक गैर-ऋणात्मक पूर्णांक का प्रतिनिधित्व कर सकती है, क्योंकि '1' के रूप में सबसे महत्वपूर्ण बिट के साथ शेष बिट संयोजन ऋणात्मक पूर्णांक -1 से -128 का प्रतिनिधित्व करते हैं।

दोनों का अनुपूरण संक्रिया योगात्मक व्युत्क्रम संक्रिया है, इसलिए ऋणात्मक संख्याओं को दोनों के निरपेक्ष मान के अनुपूरण द्वारा दर्शाया जाता है।

अपने अनुपूरण से

एक ऋणात्मक द्विआधारी संख्या के दोनों अनुपूरण प्राप्त करने के लिए, बिटवाइज़ NOT संक्रिया का उपयोग करके सभी बिट को व्युत्क्रमित या फ़्लिप किया जाता है; फिर 1 का मान परिणामी मान में योग दिया जाता है, उस अतिप्रवाह को अनदेखा कर दिया जाता है जो दोनों के बीच 0 का अनुपूरण लेते समय होता है।

उदाहरण के लिए, 1 बाइट (=8 बिट) का उपयोग करके, दशमलव संख्या 5 को

0000 01012

द्वारा दर्शाया जाता है, सबसे महत्वपूर्ण बिट (इस स्थिति में सबसे बाईं ओर का बिट) 0 है, इसलिए प्रतिरूप गैर-ऋणात्मक मान का प्रतिनिधित्व करता है। दो-अनुपूरण संकेतन में -5 में परिवर्तित करने के लिए, सबसे पहले, सभी बिट व्युत्क्रमित होते हैं, अर्थात: 0 1 बन जाता है और 1 0 बन जाता है:

1111 10102

इस बिंदु पर, प्रतिनिधित्व दशमलव मान -5 का अनुपूरण है। दोनों का अनुपूरण प्राप्त करने के लिए, परिणाम में 1 जोड़ा जाता है, जिससे:

1111 10112

परिणाम चिन्हित द्विआधारी संख्या है जो दो-अनुपूरण रूप में दशमलव मान -5 का प्रतिनिधित्व करता है। सबसे महत्वपूर्ण बिट 1 है, इसलिए दर्शाया गया मान ऋणात्मक है।

सबसे ऋणात्मक संख्या के विशेष स्थिति को छोड़कर, किसी ऋणात्मक संख्या का दोनों का अनुपूरण संगत धनात्मक मान होता है। उदाहरण के लिए, −5 (ऊपर) के बिट को व्युत्क्रमित करने पर यह मिलता है:

0000 01002

और जोड़ने पर अंतिम मान मिलता है:

0000 01012

इसी प्रकार, दोनों का शून्य का अनुपूरण शून्य है: व्युत्क्रमित करने से सभी मिलते हैं, और जोड़ने से वापस शून्य में बदल जाता है (चूंकि अतिप्रवाह को अनदेखा कर दिया जाता है)।

प्रतिनिधित्व करने योग्य सबसे ऋणात्मक संख्या का दोनों का अनुपूरण (उदाहरण के लिए सबसे महत्वपूर्ण बिट के रूप में और अन्य सभी बिट शून्य) ही हैं। इसलिए, 'अतिरिक्त' ऋणात्मक संख्या है जिसके लिए दो का अनुपूरण निषेधन नहीं देता है, अतः नीचे § सर्वाधिक ऋणात्मक संख्या देखें।

2n से घटाव

किसी संख्या और उसके अनुपूरण का योग सभी 1 बिट्स के साथ एक N-शब्द है, जो (एक अचिन्हित द्विआधारी संख्या के रूप में पढ़ा जाता है) 2N − 1 है। फिर इसके दो अनुपूरण में संख्या जोड़ने से N न्यूनतम बिट्स 0 पर समूहित हो जाता है और चलन बिट 1 हो जाता है, जहां बाद वाले का महत्व 2N होता है (इसे अचिन्हित द्विआधारी संख्या के रूप में पढ़ा जाता है)। अत: अचिन्हित द्विआधारी अंकगणित में धनात्मक x के दो-अनुपूरण ऋणात्मक संख्या x* का मान समानता x* = 2Nx को संतुष्ट करता है।[lower-alpha 1]

उदाहरण के लिए, -5 का चार-बिट प्रतिनिधित्व खोजने के लिए (सबस्क्रिप्ट मूलांक को दर्शाते हैं):

x = 510 इसलिए x = 01012

इसलिए, N = 4 के साथ:

x* = 2Nx = 24 − 510 = 1610 - 510 = 100002 − 01012 = 10112

गणना पूर्ण रूप से आधार 10 में की जा सकती है, अंत में आधार 2 में परिवर्तित की जा सकती है:

x* = 2Nx = 24 − 510 = 1110 = 10112

एलएसबी से एमएसबी की ओर कार्य करना

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

कंप्यूटर परिपथिकी में, यह विधि अनुपूरण और विधि जोड़ने से तीव्र नहीं है; दोनों विधियों में तर्क परिवर्तन को बढ़ावा देने के लिए दाएं से बाएं तक क्रमिक रूप से कार्य करने की आवश्यकता होती है। किसी को अनुपूरण करने और जोड़ने की विधि को मानक चलन लुक-फ़ॉरवर्ड योजक परिपथ द्वारा तीव्र किया जा सकता है; एमएसबी विधि की ओर एलएसबी को समान तर्क परिवर्तन द्वारा तीव्र किया जा सकता है।

चिन्ह एक्सटेंशन

दो के अनुपूरण का उपयोग करके 7- और 8-बिट पूर्णांकों में चिन्ह-बिट पुनरावृत्ति
दशमलव 7-बिट संकेतन 8-बिट संकेतन
−42  1010110 1101 0110
42  0101010 0010 1010

एक निश्चित संख्या में बिट वाली दो-अनुपूरण संख्या को अधिक बिट वाली संख्या में बदलते समय (उदाहरण के लिए, एक-बाइट चर से दो-बाइट चर में अनुकारित करते समय), सबसे महत्वपूर्ण बिट को सभी अतिरिक्त बिट में दोहराया जाना चाहिए। कुछ प्रोसेसर ही निर्देश में ऐसा करते हैं; अन्य प्रोसेसरों पर, प्रासंगिक बिट या बाइट को समूहित करने के लिए कोड के बाद प्रतिबंधात्मक का उपयोग किया जाना चाहिए।

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

कुछ गुणन एल्गोरिदम के लिए परिशुद्धता को स्थानांतरित करना और दोगुना करना दोनों महत्वपूर्ण हैं। ध्यान दें कि योग और घटाव के विपरीत, चिन्हित और अचिन्हित संख्याओं के लिए चौड़ाई विस्तार और दायां स्थानांतरण अलग-अलग विधि से किया जाता है।

सबसे ऋणात्मक संख्या

मात्र अपवाद के साथ, दो-अनुपूरण प्रतिनिधित्व में किसी भी संख्या से प्रारम्भ करते हुए, यदि सभी बिट फ़्लिप किए जाते हैं और 1 जोड़ा जाता है, तो उस संख्या के ऋणात्मक का दो-अनुपूरण प्रतिनिधित्व प्राप्त होता है। धनात्मक 12 ऋणात्मक 12 बन जाता है, धनात्मक 5 ऋणात्मक 5 बन जाता है, शून्य शून्य हो जाता है (+ अतिप्रवाह), आदि।

दोनों −128 के अनुपूरण हैं
−128 1000 0000
व्युत्क्रम बिट 0111 1111
एक जोड़ें 1000 0000
Result is the same 8 bit binary number.

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

This phenomenon is fundamentally about the mathematics of binary numbers, not the details of the representation as two's complement.[citation needed] गणितीय रूप से, यह इस तथ्य का अनुपूरण है कि का ऋणात्मक 0 फिर से है : बिट की दी गई संख्या के लिए, k, द्विआधारी संख्या 2 की सम संख्या होती हैk, ऋणात्मक लेना द्विआधारी संख्याओं पर समूह क्रिया (गणित) (क्रम 2 के समूह (गणित) का) है, और चूंकि शून्य की कक्षा (समूह सिद्धांत) का क्रम 1 है, कम से कम अन्य संख्या की कक्षा होनी चाहिए कक्षाओं के क्रम को समूह के क्रम में जोड़ने के लिए क्रम 1। इस प्रकार ऋणात्मक लेने के तहत कुछ अन्य संख्या अपरिवर्तनीय होनी चाहिए (औपचारिक रूप से, कक्षा-स्टेबलाइज़र प्रमेय द्वारा)। ज्यामितीय रूप से, कोई भी देख सकता है k-बिट द्विआधारी संख्याएँ चक्रीय समूह के रूप में जिसे वृत्त (या ठीक से नियमित 2) के रूप में देखा जा सकता हैk-गॉन), और ऋणात्मक लेना प्रतिबिंब है, जो 2:0 और विपरीत बिंदु को विभाजित करने वाले क्रम के तत्वों को, या दृष्टिगत रूप से चरम और नादिर को ठीक करता है।

सबसे ऋणात्मक संख्या की उपस्थिति अप्रत्याशित प्रोग्रामिंग बग्स को जन्म दे सकती है जहां परिणाम में अप्रत्याशित संकेत होता है, या अप्रत्याशित अतिप्रवाह अपवाद की ओर जाता है, या पूर्ण रूप से असामान्य व्यवहार की ओर जाता है। उदाहरण के लिए,

  • एकात्मक निषेध संचालिका किसी अशून्य संख्या का चिह्न नहीं बदल सकती। जैसे, −(−128)  ⟼  −128   (जहाँ को वैसे ही पढ़ा जाता है जैसे बन जाता है)।
  • निरपेक्ष मान का कार्यान्वयन ऋणात्मक संख्या लौटा सकता है;[4] जैसे,   abs(−128)  ⟼  −128 .
  • इसी प्रकार, −1 से गुणा अपेक्षित रूप से कार्य करने में विफल हो सकता है; उदाहरण के लिए, (−128) × (−1)  ⟼  −128 .
  • −1 से भाग देने पर अपवाद हो सकता है (जैसा कि 0 से भाग देने पर होता है);[5] यहां तक ​​कि -1 द्वारा शेषफल (या मॉड्यूलो) की गणना भी इस अपवाद को ट्रिगर कर सकती है; उदाहरण के लिए,[6] जैसे, (−128) ÷ (−1)  ⟼  [CRASH] , (−128) % (−1)  ⟼  [CRASH] .

C (प्रोग्रामिंग भाषा) और C++ प्रोग्रामिंग भाषाओं में, उपरोक्त व्यवहार अपरिभाषित व्यवहार हैं और न मात्र वे असामान्य परिणाम दे सकते हैं, बल्कि कंपाइलर यह मानने के लिए स्वतंत्र है कि प्रोग्रामर ने यह सुनिश्चित किया है कि अपरिभाषित संख्यात्मक संचालन कभी नहीं होगा, और उस धारणा से निष्कर्ष निकालें।[6] यह कई अनुकूलन सक्षम करता है, परन्तु इन अपरिभाषित गणनाओं वाले कार्यक्रमों में कई असामान्य बग भी उत्पन्न करता है।

दो के अनुपूरण में इस सबसे ऋणात्मक संख्या को कभी-कभी असामान्य संख्या कहा जाता है, क्योंकि यह एकमात्र अपवाद है।[7][8] यद्यपि संख्या अपवाद है, यह नियमित दो की अनुपूरण प्रणालियों में वैध संख्या है। सभी अंकगणितीय परिचालन इसके साथ संकार्य के रूप में और (जब तक कि कोई अतिप्रवाह न हो) परिणाम के रूप में कार्य करते हैं।

यह क्यों कार्य करता है

सभी संभव N-बिट मानों के एक समूह को देखते हुए, हम निम्न (द्विआधारी मान द्वारा) अर्ध को 0 से (2N − 1 − 1) तक के पूर्णांक के रूप में निर्दिष्ट कर सकते हैं और ऊपरी अर्ध को −2N − 1 से −1 समावेशी तक के पूर्णांक के रूप में निर्दिष्ट कर सकते हैं। ऊपरी अर्ध भाग (फिर से, द्विआधारी मान द्वारा) का उपयोग−2N − 1 से −1 तक ऋणात्मक पूर्णांकों को दर्शाने के लिए किया जा सकता है, क्योंकि, अतिरिक्त मॉड्यूलो 2N के अंतर्गत वे उन ऋणात्मक पूर्णांकों के समान ही व्यवहार करते हैं। कहने का तात्पर्य यह है कि क्योंकि i + j mod 2N = i + (j + 2N) mod 2N समूह में कोई भी मान { j + k 2N | k एक पूर्णांक है }  का उपयोग j के स्थान पर किया जा सकता है।[9]

उदाहरण के लिए, आठ बिट के साथ, अचिन्हित बाइट 0 से 255 हैं। शीर्ष अर्ध (128 से 255) से 256 घटाने पर चिन्हित बाइट -128 से -1 प्राप्त होते हैं।

दो के अनुपूरण के संबंध का एहसास इस बात पर ध्यान देने से होता है कि 256 = 255 + 1, और (255 − x) x का इकाई का अनुपूरण है।

ध्यान देने योग्य कुछ विशेष संख्याएँ
दशमलव द्विआधारी
127  0111 1111
64  0100 0000
1 0000 0001
0 0000 0000
−1  1111 1111
−64  1100 0000
−127  1000 0001
−128  1000 0000

उदाहरण

इस उपधारा में, दशमलव संख्याओं के साथ दशमलव बिंदु जोड़ा जाता है।

उदाहरण के लिए, 8 बिट संख्या मात्र -128 से 127. प्रत्येक पूर्णांक का प्रतिनिधित्व कर सकती है, समावेशी, चूँकि (28 − 1 = 128.). −95. modulo 256. 161 के बराबर है

−95। +256।
= −95। + 255। + 1
= 255। − 95। + 1
= 160। + 1।
=161।

<पूर्व शैली=चौड़ाई:25em >

 1111 1111 255।
− 0101 1111 − 95।

अंकगणितीय संक्रियाएं

जोड़

दो की अनुपूरण संख्याओं को जोड़ने के लिए किसी विशेष प्रसंस्करण की आवश्यकता नहीं होती है, यद्यपि संकार्य में विपरीत चिह्न हों; परिणाम का चिह्न स्वचालित रूप से निर्धारित होता है। उदाहरण के लिए, 15 और −5 जोड़ने पर:

<पूर्व शैली=चौड़ाई:25em >

 0000 1111 (15)
+ 1111 1011 (−5)

घटाव

कंप्यूटर सामान्यतः घटाव को लागू करने के लिए अनुपूरण की विधि का उपयोग करते हैं। घटाव के लिए अनुपूरणों का उपयोग करना ऋणात्मक संख्याओं का प्रतिनिधित्व करने के लिए अनुपूरणों का उपयोग करने से निकटता से संबंधित है, क्योंकि संयोजन संकार्य और परिणामों के सभी संकेतों की अनुमति देता है; प्रत्यक्ष घटाव दो-अनुपूरण संख्याओं के साथ भी कार्य करता है। योग के जैसे, दो के अनुपूरण का उपयोग करने का लाभ यह निर्धारित करने के लिए संकार्य के संकेतों की जांच करने का उन्मूलन है कि योग या घटाव की आवश्यकता है या नहीं। उदाहरण के लिए, 15 में से −5 घटाना वस्तुतः 5 से 15 जोड़ना है, परन्तु यह दो-अनुपूरण प्रतिनिधित्व द्वारा छिपा हुआ है:

<पूर्व शैली=चौड़ाई:25em >

 11110 000 (carry)
 0000 1111 (15)
− 1111 1011 (−5)

गुणा

दो N-बिट संख्याओं के गुणनफल को सभी संभावित मानों को समाहित करने के लिए 2N बिट की आवश्यकता होती है।[10]

यदि दो के अनुपूरण का उपयोग करते हुए दो संकार्य की यथार्थता गुणन से पहले दोगुनी हो जाती है, तो प्रत्यक्ष गुणन (उस यथार्थता के अतिरिक्त किसी भी अतिरिक्त बिट को छोड़कर) उचित परिणाम प्रदान करेगा।[11] उदाहरण के लिए, 6 × (−5) = −30 लें। सबसे पहले, परिशुद्धता को चार बिट से आठ तक बढ़ाया जाता है। फिर आठवें बिट से आगे के बिट को हटाकर संख्याओं को गुणा किया जाता है (जैसा कि x द्वारा दिखाया गया है):

<पूर्व शैली=चौड़ाई:25em >

 00000110 (6)
* 11111011 (−5)

तुलना (क्रमण)

तुलना (कंप्यूटर प्रोग्रामिंग) को प्रायः कृत्रिम घटाव के साथ लागू किया जाता है, जहां कंप्यूटर के स्थिति रजिस्टर में फ्लैग की जांच की जाती है, परन्तु मुख्य परिणाम को अनदेखा कर दिया जाता है। शून्य फ्लैग इंगित करता है कि दो मानों की तुलना बराबर है। यदि फ्लैग पर चिन्ह और अतिप्रवाह फ्लैग का अनन्य-या 1 है, तो घटाव परिणाम शून्य से कम था, अन्यथा परिणाम शून्य या अधिक था। ये जाँचें प्रायः सप्रतिबन्ध शाखा निर्देशों में कंप्यूटर में लागू की जाती हैं।

अचिन्हित द्विआधारी संख्याओं को सरल शब्दकोषीय क्रम द्वारा क्रमबद्ध किया जा सकता है, जहां बिट मान 0 को बिट मान 1 से कम के रूप में परिभाषित किया गया है। दो के अनुपूरण मानों के लिए, सबसे महत्वपूर्ण बिट का अर्थ व्युत्क्रमित है (अर्थात 1, 0 से कम है)।

निम्नलिखित एल्गोरिदम (एक n-बिट दो के अनुपूरण संरचना के लिए) परिणाम रजिस्टर R को −1 पर समूह करता है यदि A < B, +1 पर यदि A > B, और 0 पर यदि A और B बराबर हैं:

// reversed comparison of the sign bit

if A(n-1) == 0 and B(n-1) == 1 then
    return +1
else if A(n-1) == 1 and B(n-1) == 0 then
    return -1
end
 
// comparison of remaining bits

for i = n-2...0 do
    if A(i) == 0 and B(i) == 1 then
        return -1
    else if A(i) == 1 and B(i) == 0 then
        return +1 
    end
end
 
return 0

दो की अनुपूरण संख्याएँ और 2-एडिक संख्याएँ

1972 में एमआईटी एआई लैब द्वारा प्रकाशित क्लासिक हकमेम में, बिल गोस्पर ने उल्लेख किया कि किसी मशीन का आंतरिक प्रतिनिधित्व दो-अनुपूरण था या नहीं, यह दो की क्रमिक घातों को जोड़कर निर्धारित किया जा सकता है। कल्पना की उड़ान में, उन्होंने नोट किया कि बीजगणितीय रूप से ऐसा करने के परिणाम से संकेत मिलता है कि बीजगणित मशीन (ब्रह्मांड) पर चलाया जाता है जो दो का अनुपूरण है।[12]

गोस्पर के अंतिम निष्कर्ष को आवश्यक नहीं कि गंभीरता से लिया जाए, और यह गणितीय परिहास के समान है। महत्वपूर्ण चरण है ...110 = ...111 - 1, अर्थात, 2X = X - 1, और इस प्रकार X = ...111 = -1। यह ऐसी विधि की परिकल्पना करता है जिसके द्वारा 1s की अनंत स्ट्रिंग को संख्या माना जाता है, जिसके लिए प्रारंभिक अंकगणित में परिमित स्थान-मान अवधारणाओं के विस्तार की आवश्यकता होती है। यह या तो सभी पूर्णांकों के लिए दो-अनुपूरण नोटेशन के भाग के रूप में, एक विशिष्ट 2-एडिक संख्या के रूप में, या यहां तक ​​कि वास्तविक संख्याओं 1 + 2 + 4 + 8 + ··· की भिन्न श्रृंखला के लिए परिभाषित सामान्यीकृत योगों में से एक के रूप में भी सार्थक है।[13] डिजिटल अंकगणित परिपथ, अनंत (2 की धनात्मक घातों तक विस्तारित) बिट स्ट्रिंग के साथ संचालित करने के लिए आदर्श, दो-एडिक योग और दो के अनुपूरण प्रतिनिधित्व के साथ संगत गुणन उत्पन्न करते हैं।[14] 2-एडिक मिति समष्टि में द्विआधारी अंकगणितीय और बिटवाइज़ संचालन के निरंतर कार्य का क्रिप्टोग्राफी में भी कुछ उपयोग होता है।[15]

भिन्न रूपांतरण

किसी संख्या को भिन्नात्मक भाग के साथ परिवर्तित करने के लिए, जैसे कि .0101, किसी को सामान्य रूपांतरण के जैसे दाएं से बाएं 1s को दशमलव में परिवर्तित करना होगा। इस उदाहरण में 0101 दशमलव में 5 के बराबर है। चल बिंदु के बाद प्रत्येक अंक अंश का प्रतिनिधित्व करता है जहां हर 2 का गुणक है। इसलिए, प्रथम 1/2 है, दूसरा 1/4 है और इसी प्रकार। जैसा कि ऊपर बताया गया है, पहले से ही दशमलव मान की गणना करने के बाद, मात्र एलएसबी (एलएसबी = दाएं से प्रारम्भ) के हर का उपयोग किया जाता है। इस रूपांतरण का अंतिम परिणाम 5/16 है।

उदाहरण के लिए, इस विधि के कार्य करने के लिए .0110 का चल मान होने पर, किसी को दाईं ओर से अंतिम 0 पर विचार नहीं करना चाहिए। इसलिए, 0110 के लिए दशमलव मान की गणना करने के अतिरिक्त, हम मान 011 की गणना करते हैं, जो दशमलव में 3 है (अंत में 0 छोड़ने पर, परिणाम 6 होता, साथ में हर 24= 16, जो घटकर 3/8 हो जाता है)। हर 8 है, जो अंतिम परिणाम 3/8 देता है।

यह भी देखें

  • प्रभाग एल्गोरिदम, जिसमें दो-अनुपूरण अभ्यावेदन में विभाजन को पुनर्स्थापित करना और गैर-पुनर्स्थापित करना सम्मिलित है
  • ऑफसेट द्विआधारी
  • पी-एडिक संख्या
  • अनुपूरण की विधि, अन्य संख्या आधारों का सामान्यीकरण, यांत्रिक कैलकुलेटर पर उपयोग किया जाता है

टिप्पणियाँ

  1. For x = 0 we have 2N − 0 = 2N, which is equivalent to 0* = 0 modulo 2N (i.e. after restricting to N least significant bits).

संदर्भ

  1. E.g. "Signed integers are two's complement binary values that can be used to represent both positive and negative integer values.", Section 4.2.1 in Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 1: Basic Architecture, November 2006
  2. David J. Lilja; Sachin S. Sapatnekar (2005). वेरिलॉग के साथ डिजिटल कंप्यूटर सिस्टम डिजाइन करना. Cambridge University Press.
  3. von Neumann, John (1945), First Draft of a Report on the EDVAC (PDF), retrieved February 20, 2021
  4. "Math". API specification. Java Platform SE 7.
  5. Regehr, John (2013). "Nobody expects the Spanish inquisition, or INT_MIN to be divided by -1". Regehr.org (blog).
  6. 6.0 6.1 Seacord, Robert C. (2020). "Ensure that operations on signed integers do not result in overflow". Rule INT32-C. wiki.sei.cmu.edu. SEI CERT C Coding Standard.
  7. Affeldt, Reynald & Marti, Nicolas (2006). Formal verification of arithmetic functions in SmartMIPS Assembly (PDF) (Report). Archived from the original (PDF) on 2011-07-22.
  8. Harris, David Money; Harris, Sarah L. (2007). Digital Design and Computer Architecture. p. 18 – via Google Books.
  9. "3.9. Two's Complement". Chapter 3. Data Representation. cs.uwm.edu. 2012-12-03. Archived from the original on 31 October 2013. Retrieved 2014-06-22.
  10. Bruno Paillard. An Introduction To Digital Signal Processors, Sec. 6.4.2. Génie électrique et informatique Report, Université de Sherbrooke, April 2004.
  11. Karen Miller (August 24, 2007). "Two's Complement Multiplication". cs.wisc.edu. Archived from the original on February 13, 2015. Retrieved April 13, 2015.
  12. "प्रोग्रामिंग हैक्स". HAKMEM. ITEM 154 (Gosper).
  13. For the summation of 1 + 2 + 4 + 8 + ··· without recourse to the 2-adic metric, see Hardy, G.H. (1949). Divergent Series. Clarendon Press. LCC QA295 .H29 1967. (pp. 7–10)
  14. Vuillemin, Jean (1993). सर्किट और नंबरों पर (PDF). Paris: Digital Equipment Corp. p. 19. Retrieved 2023-03-29., Chapter 7, especially 7.3 for multiplication.
  15. Anashin, Vladimir; Bogdanov, Andrey; Kizhvatov, Ilya (2007). "एबीसी स्ट्रीम सिफर". Russian State University for the Humanities. Retrieved 24 January 2012.

अग्रिम पठन

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

बाहरी संबंध