संख्या निरूपण व कंप्यूटर अंकगणित

यह कंप्यूटर विज्ञान का खंड है, और केवल उसी का: डिजिटल लॉजिक, CS पेपर का खंड 2 है, और यहाँ किसी अन्य सत्यापित पेपर का पाठ्यक्रम इसके लिए नहीं पढ़ा गया — इलेक्ट्रॉनिक्स व विद्युत पेपरों के अपने डिजिटल खंड हैं जिनकी प्रकाशित उप-सूचियाँ अभी इस पाठ्यक्रम से नहीं मिलाई गई हैं, अतः यदि आप उनमें से कोई दे रहे हैं तो ये तीन अध्याय अपने मानने से पहले अपना पाठ्यक्रम देखें। खंड सर्वप्रथम संख्या निरूपण पूछता है, और प्रवेश का उपयोगी मार्ग यह देखना है कि कोई बिट-प्रतिरूप स्वयं में कुछ अर्थ नहीं रखता। 10110101 या 181 है, या −75, या कोई वर्ण, या कोई चल-बिंदु घातांक क्षेत्र — प्रतिरूप यह नहीं बताता कि कौन-सा; व्याख्या बताती है। यहाँ लगभग प्रत्येक प्रश्न वस्तुतः यही पूछ रहा है कि कौन-सी व्याख्या लागू है। तीन तथ्य अधिकांश अंक उठाते हैं। दो का पूरक असम है: n बिट −2n−1 से 2n−1−1 रखते हैं, अतः 8-बिट बाइट −128 तक पहुँचता है पर केवल +127 तक, और वही अनुपस्थित +128 है जहाँ से सर्वाधिक ऋण संख्या के निषेधन वाले प्रश्न आते हैं। वहन अतिप्रवाह नहीं है: अचिह्नित अंकगणित तब अतिप्रवाहित होता है जब वहन शीर्ष बिट से बाहर जाए, चिह्नित अंकगणित तब जब शीर्ष बिट में आने वाला वहन उससे बाहर जाने वाले से भिन्न हो, और दोनों शर्तें स्वतंत्र हैं। तथा अधिकांश दशमलव भिन्नों का यथार्थ द्विआधारी रूप नहीं होता — 0.1 आवर्ती द्विआधारी भिन्न है ठीक जैसे 1/3 आवर्ती दशमलव — इसीलिए चल-बिंदु तुलनाएँ विफल होती हैं और प्रश्न प्रायः परिमाण के बजाय परिशुद्धता के विषय में होता है।

आधार, तथा एक प्रतिरूप को दो प्रकार से पढ़ना

स्थानीय आधार-r संख्या अंकों व r की घातों के गुणनफलों का योग है, और द्विआधारी, अष्टक व षोडश आधार के बीच रूपांतरण में अंकगणित की आवश्यकता ही नहीं: अष्टक अंक तीन बिट हैं, षोडश अंक चार बिट, अतः 10110101 का समूहन 1011 0101 = षोडश में B5 तथा 10 110 101 = अष्टक में 265 है। दशमलव से व तक रूपांतरण ही एकमात्र दिशा है जिसमें श्रम लगता है — पूर्णांक भाग हेतु आधार से बार-बार भाग, भिन्न भाग हेतु बार-बार गुणा।

वही आठ बिट, चार व्याख्याओं में
व्याख्या10110101 का अर्थकैसे पढ़ा जाता है
अचिह्नित181128 + 32 + 16 + 4 + 1
दो का पूरक−75शीर्ष बिट सेट, अतः निषेध करें: प्रतिलोम 01001010, 1 जोड़ें → 01001011 = 75
चिह्न व परिमाण−53चिह्न बिट 1, परिमाण 0110101 = 53
एक का पूरक−74प्रतिलोम 01001010 = 74, ऋणात्मक
🎯 दो का पूरक क्यों जीता, और उसकी कीमत क्या है
अन्य तीनों निरूपणों में शून्य के दो कूटन हैं — चिह्न व परिमाण में +0 तथा −0, एक के पूरक में भी — और तब तुलनित्र या योजक को उसके लिए विशेष स्थिति चाहिए। दो के पूरक में ठीक एक शून्य है, और घटाव पूरक के योग में बदल जाता है, अतः एक ही योजक दोनों संक्रियाएँ बिना अतिरिक्त हार्डवेयर करता है। यही उसकी सार्वत्रिकता का सम्पूर्ण कारण है। कीमत असमता है: एक शून्य व 2^n प्रतिरूपों के साथ ऋणों को धनों से एक स्थान अधिक मिलता है, अतः 8 बिट −128 से +127 चलते हैं। 8 बिट में −128 का निषेध पुनः −128 देता है, क्योंकि +128 का कोई निरूपण नहीं — यह तथ्य तथ्य के रूप में जानने योग्य है, क्योंकि अंकगणित कोई चेतावनी नहीं देता।

वहन अतिप्रवाह नहीं है

100 व 50 को 8-बिट मानों के रूप में जोड़ें: 01100100 + 00110010 = 10010110। शीर्ष बिट से कोई वहन बाहर नहीं जाता, अतः अचिह्नित अंकगणित संतुष्ट है — 150 एक बाइट में आ जाता है। उसी परिणाम को चिह्नित पढ़ें तो वह −106 है, जो गलत है: दो धन संख्याओं का योग ऋण नहीं हो सकता। अतः एक ही योग से चिह्नित संक्रिया अतिप्रवाहित हुई और अचिह्नित नहीं, और जो नियम वहन-निर्गम को "वही" अतिप्रवाह ध्वजा मानता है वह इसे उलट देता है।

दो स्वतंत्र शर्तें, दो स्वतंत्र ध्वजाएँ
ध्वजाकब सेटकिसके लिए
वहनसर्वाधिक महत्वपूर्ण बिट से वहन बाहर जाता हैकेवल अचिह्नित परिणाम
अतिप्रवाहMSB में आने वाला वहन उससे बाहर जाने वाले से भिन्नकेवल चिह्नित परिणाम
🧠 चिह्न परीक्षण वहन परीक्षण से तेज़ है
वहन का अनुसरण प्रायः आवश्यक नहीं। चिह्नित अतिप्रवाह केवल तब हो सकता है जब दोनों प्रचालक समान चिह्न रखें, और वह ठीक तब हुआ है जब परिणाम विपरीत चिह्न धारण करे। धन + धन का ऋण देना, या ऋण + ऋण का धन देना, अतिप्रवाह है; असमान चिह्न वाले प्रचालक कभी अतिप्रवाहित नहीं हो सकते, क्योंकि योग का परिमाण दोनों में बड़े से परिबद्ध है। यह तीन चिह्न-बिटों पर एक दृष्टि है, और समय के दबाव में प्रयोग करने योग्य जाँच यही है।

स्थिर व चल बिंदु, तथा IEEE 754

स्थिर-बिंदु संख्या द्विआधारी बिंदु को सहमत स्थान पर रखती है, अतः निरूपणीय मानों के बीच अंतराल अचर होता है और परिसर संकीर्ण। चल-बिंदु संख्या चिह्न, घातांक व सार्थकांश संचित करती है, अतः अंतराल परिमाण के साथ बढ़ता है — वही सौदा जिसके लिए यह संरूप बना है। IEEE 754 एकल परिशुद्धता अपने 32 बिट 1 चिह्न, 8 घातांक, 23 सार्थकांश में व्यय करती है, घातांक 127 से अभिनत संचित और सामान्यीकृत सार्थकांश का अग्रणी 1 संचित न होकर अंतर्निहित, जो परिशुद्धता का 24वाँ बिट निःशुल्क देता है।

IEEE 754 एकल परिशुद्धता में −6.75 का कूटन, चरण-दर-चरण
चरणपरिणाम
चिह्नऋणात्मक → 1
द्विआधारी में परिमाण6.75 = 110.11
सामान्यीकरण1.1011 × 2²
घातांक क्षेत्र2 + 127 = 129 = 10000001
सार्थकांश (अग्रणी 1 छोड़कर)1011 तत्पश्चात् उन्नीस शून्य
पूर्ण प्रतिरूप1 10000001 10110000000000000000000
⚠️ 0.1, 0.1 नहीं है, और प्रश्न प्रायः यह जानता है
दशमलव भिन्न द्विआधारी में यथार्थ रूप से निरूपणीय केवल तब है जब उसका हर दो की घात हो। 0.5, 0.25 व 6.75 यथार्थ हैं; 0.1 व 0.3 नहीं, और निकटतम 24-सार्थक-बिट मान के रूप में संचित होते हैं — इसीलिए 0.1 को दस बार जोड़ने पर 1 नहीं मिलता, और इसीलिए चल-बिंदुओं के बीच समता परीक्षण तुलना के बजाय दोष है। परीक्षणीय परिणामों को लोकवार्ता से पृथक् करना उपयोगी है: क्रमागत चल-बिंदुओं के बीच अंतराल घातांक के साथ बढ़ता है, अतः बड़ी संख्या में छोटी जोड़ने से कुछ भी न बदल सकता है; तथा चल-बिंदु योग साहचर्य नहीं है, अतः (a + b) + c व a + (b + c) वास्तव में भिन्न हो सकते हैं। परिसर व परिशुद्धता भी पृथक् प्रश्न हैं — एकल परिशुद्धता लगभग 3.4 × 10³⁸ तक पहुँचती है जबकि परिशुद्धता के केवल लगभग सात दशमलव अंक रखती है, और "क्या यह मान संचित हो सकता है" पूछता प्रश्न प्रायः दूसरे के विषय में है।

मुख्य बिंदु

  • व्याख्या के बिना बिट-प्रतिरूप का कोई अर्थ नहीं — 10110101 अचिह्नित में 181 व दो के पूरक में −75 है।
  • दो के पूरक के n बिट −2n−1 से 2n−1−1 चलते हैं: एक शून्य, एक अतिरिक्त ऋण, और कोई +2n−1 नहीं।
  • प्रतिलोम कर एक जोड़कर निषेध करें; सर्वाधिक ऋण संख्या का निषेध उसे ही लौटाता है।
  • वहन अचिह्नित अंकगणित का है, अतिप्रवाह चिह्नित का — एक योग दोनों में कोई एक, दोनों या कोई नहीं उठा सकता है।
  • चिह्नित अतिप्रवाह हेतु समान चिह्न के प्रचालक व विपरीत चिह्न का परिणाम चाहिए — वहन नहीं, तीन चिह्न-बिट जाँचें।
  • IEEE 754 एकल: 1 + 8 + 23 बिट, घातांक 127 से अभिनत, अग्रणी सार्थकांश 1 अंतर्निहित, संचित नहीं।
  • दशमलव भिन्न द्विआधारी में यथार्थ केवल तब है जब उसका हर दो की घात हो — 0.1 कभी नहीं।
  • चल-बिंदु अंतराल परिमाण के साथ बढ़ता है, अतः चल-बिंदु योग साहचर्य नहीं है।

अभ्यास प्रश्न (8)

उत्तर खोलने से पहले प्रत्येक प्रश्न हल करें। हर व्याख्या सही विकल्प के साथ लुभावना गलत विकल्प भी बताती है, क्योंकि अंक वहीं जाते हैं।

  1. 8-बिट प्रतिरूप 10110101, दो के पूरक पूर्णांक के रूप में, है:

    1. 181
    2. −75
    3. −53
    4. −74
    उत्तर देखें

    उत्तर: B — −75

    शीर्ष बिट 1 है, अतः मान ऋणात्मक है और उसका परिमाण प्रतिरूप का दो का पूरक है: 10110101 को प्रतिलोम कर 01001010 और एक जोड़कर 01001011 = 75, अतः मान −75 है। प्रत्येक अन्य विकल्प वही प्रतिरूप भिन्न परिपाटी में पढ़ा गया है, और यही प्रश्न का अभिप्राय है — 181 अचिह्नित पाठ है, −53 चिह्न व परिमाण (चिह्न बिट सहित 0110101 = 53), तथा −74 एक का पूरक (केवल प्रतिलोम)। प्रतिरूप अपनी व्याख्या स्वयं नहीं रखता, और जो प्रश्न कोई व्याख्या नहीं बताता वह प्रायः ठीक यही जाँच रहा है।
  2. दो 8-बिट मान 01100100 व 00110010 जोड़े जाते हैं। परिणाम कौन-सी ध्वजाएँ उठाता है?

    1. केवल वहन
    2. केवल चिह्नित अतिप्रवाह
    3. वहन व चिह्नित अतिप्रवाह दोनों
    4. कोई नहीं
    उत्तर देखें

    उत्तर: B — केवल चिह्नित अतिप्रवाह

    मान 100 व 50 हैं, योग 150 = 10010110। सर्वाधिक महत्वपूर्ण बिट से कोई वहन बाहर नहीं जाता, अतः वहन ध्वजा निर्मुक्त है और अचिह्नित परिणाम 150 एक बाइट में पूर्णतः सही है। परंतु चिह्नित पढ़ने पर दो धन प्रचालकों ने ऋण परिणाम दिया है (10010110 = −106), अतः चिह्नित अतिप्रवाह सेट है। सम्पूर्ण शिक्षा यही है: दोनों ध्वजाएँ भिन्न प्रश्नों का उत्तर देती हैं और एक योग किसी एक को दूसरे के बिना उठा सकता है। विकल्प C वह है जो अभ्यर्थी "अतिप्रवाह का अर्थ परिणाम नहीं समाया" सीखकर, किस व्याख्या में नहीं समाया पूछे बिना चुनता है।
  3. 8-बिट दो के पूरक में, −128 का निषेध देता है:

    1. +128
    2. +127
    3. −128
    4. 0
    उत्तर देखें

    उत्तर: C — −128

    −128 है 10000000। प्रतिलोम देता है 01111111 और एक जोड़ने पर पुनः 10000000, अतः निषेध −128 लौटाता है। कारण अंकगणितीय चूक नहीं, निरूपण की असमता है: 8 बिट −128 से +127 रखते हैं, अतः +128 का कोई कूटन ही नहीं और संक्रिया के पास पहुँचने हेतु कोई सही स्थान नहीं। हार्डवेयर अतिप्रवाह ध्वजा उठाता है; जो मान वह देता है वही निवेश है। विकल्प A गणितीय रूप से सही और निरूपण की दृष्टि से असंभव उत्तर है, ठीक इसीलिए वह भ्रामक है।
  4. एक चिह्नित पूर्णांक दो के पूरक के 12 बिट में संचित है। वह अधिकतम कौन-सा धन मान रख सकता है?

    संख्यात्मक उत्तर — मान टाइप करें।

    उत्तर देखें

    उत्तर: 2047

    n बिट के साथ परिसर −2n−1 से 2n−1−1 है, अतः 12 बिट धन पक्ष पर 2¹¹ − 1 = 2047 व ऋण पक्ष पर −2048 तक पहुँचते हैं। सर्वाधिक सामान्य गलत उत्तर 2048 है, घात याद रखकर उस −1 को भूलने से जो एकल शून्य कूटन बाध्य करता है। परिसर को n के बजाय घातांक n − 1 से पढ़ना उसी आदत का दूसरा आधा है: वह 2¹¹ है, 2¹² नहीं, क्योंकि बारह में से एक बिट चिह्न पर व्यय होता है।
  5. IEEE 754 एकल परिशुद्धता में −6.75 का घातांक क्षेत्र है:

    1. 10000001
    2. 00000010
    3. 10000010
    4. 01111111
    उत्तर देखें

    उत्तर: A — 10000001

    6.75 द्विआधारी में 110.11 है, जो 1.1011 × 2² पर सामान्यीकृत होता है, अतः वास्तविक घातांक 2 है। क्षेत्र उसे 127 से अभिनत संचित करता है, जिससे 2 + 127 = 129 = 10000001। विकल्प B अनभिनत घातांक सीधे क्षेत्र में लिखा गया है, जो इस विषय की एकमात्र सर्वाधिक सामान्य त्रुटि है; विकल्प D स्वयं अभिनति है, जो शून्य घातांक (1 व 2 के बीच के मान) का क्षेत्र है। चिह्न बिट 1 है और सार्थकांश 1011 तत्पश्चात् उन्नीस शून्य, अग्रणी 1 संचित न होकर अंतर्निहित।
  6. IEEE 754 एकल-परिशुद्धता चल-बिंदु के विषय में निम्नलिखित में कौन सत्य हैं? (एक से अधिक सही हो सकते हैं।)

    1. योग साहचर्य नहीं है
    2. 0.1 का यथार्थ निरूपण है
    3. क्रमागत निरूपणीय मानों के बीच अंतर परिमाण के साथ बढ़ता है
    4. सामान्यीकृत सार्थकांश का अग्रणी बिट स्पष्ट रूप से संचित होता है
    उत्तर देखें

    उत्तर: A — योग साहचर्य नहीं है; C — क्रमागत निरूपणीय मानों के बीच अंतर परिमाण के साथ बढ़ता है

    A व C सत्य हैं, और वे एक ही तथ्य दो बार हैं। चूँकि घातांक अंतराल को मापित करता है, क्रमागत चल-बिंदु बड़े परिमाणों पर दूर-दूर व छोटे पर निकट होते हैं (C) — और ठीक इसीलिए बड़ी संख्या में छोटी जोड़ने पर वह पूर्णतः बट्टे में जा सकती है, जिससे (a + b) + c, a + (b + c) से भिन्न हो जाता है (A)। B असत्य है: 0.1 आवर्ती द्विआधारी भिन्न है, क्योंकि उसका हर दो की घात नहीं, और वह निकटतम 24-बिट सार्थकांश के रूप में संचित होता है। D असत्य है और संरूप की सर्वाधिक चतुर बचत है — सामान्यीकृत सार्थकांश सदा 1 से आरंभ होता है, अतः वह बिट अंतर्निहित है, जो 23 बिट संचय से परिशुद्धता का 24वाँ बिट देता है।
  7. द्विआधारी संख्या 10110101 क्रमशः षोडश आधार व अष्टक में है:

    1. B5 व 265
    2. A5 व 245
    3. B5 व 245
    4. 5B व 265
    उत्तर देखें

    उत्तर: A — B5 व 265

    दाएँ से समूह बनाएँ, षोडश हेतु चार बिट: 1011 0101 = B 5, अतः B5। अष्टक हेतु तीन बिट, बाएँ समूह में पूरण: 010 110 101 = 2 6 5, अतः 265। किसी भी दिशा में अंकगणित आवश्यक नहीं, और यही व्यावहारिक बिंदु है — षोडश व अष्टक द्विआधारी की संक्षिप्त वर्तनी के रूप में हैं, दशमलव से होकर रूपांतरित करने योग्य पृथक् संख्या-पद्धतियों के रूप में नहीं। विकल्प D षोडश अंकों को उलट देता है, जो बिट-संख्या चार का गुणज न होने पर बाएँ से समूह बनाने से मिलता है; पूरण सदा बाईं ओर लगता है।
  8. दशमलव संख्या 45 पैक्ड BCD में संचित है। उन्हीं आठ बिटों को साधारण अचिह्नित द्विआधारी संख्या पढ़ने पर मिलता है:

    1. 45
    2. 69
    3. 63
    4. 54
    उत्तर देखें

    उत्तर: B — 69

    पैक्ड BCD प्रत्येक दशमलव अंक को अपने चार बिटों में संचित करता है, अतः 45 बनता है 0100 0101। उसे एक द्विआधारी संख्या पढ़ने पर वह प्रतिरूप 64 + 4 + 1 = 69 है। सीधा द्विआधारी 45 को 00101101 के रूप में संचित करता, पूर्णतः भिन्न प्रतिरूप। यह इस अध्याय की व्याख्या-समस्या का सर्वाधिक व्यावहारिक रूप है: BCD परिसर व्यर्थ करता है — चार बिट सोलह मान रखते हैं और BCD दस प्रयोग करता है — और बदले में कुछ विशिष्ट पाता है, कि दशमलव अंक भाग के बिना प्रदर्शन में व से रूपांतरित होते हैं। विकल्प A वह है जो अभ्यर्थी यह मानकर देता है कि संचित संख्या, उस पर कोई भी परिपाटी लगे, वही पढ़ी जाएगी — और यही एक मान्यता है जिसे तोड़ने हेतु यह सम्पूर्ण खंड है।