Computer >> कंप्यूटर >  >> हार्डवेयर >> CPU

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

कंप्यूटर के बारे में सबसे पहली चीज जो हम सीखते हैं, वह यह है कि वे केवल 0s और 1s . को ही समझते हैं , या बिट्स .

दूसरी ओर, हम मनुष्य दशमलव प्रणाली के माध्यम से संख्याओं का संचार करते हैं। यह प्रणाली धनात्मक या ऋणात्मक संख्याओं को दर्शाने के लिए प्लस और माइनस चिह्नों (+ और -) के साथ 0 से 9 तक के अंकों का उपयोग करती है।

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

पहला, कंप्यूटर के काम करने के तरीके के बारे में कुछ पृष्ठभूमि

सॉफ्टवेयर, इमेज, टेक्स्ट, वीडियो, नंबर और बीच में सब कुछ हमारे कंप्यूटर में सबसे निचले स्तर पर 0s और 1s हैं।

छवियों, टेक्स्ट, वीडियो और संख्याओं के लिए, हमारे पास एन्कोडिंग योजनाएं हैं जो तय करती हैं कि ये सामान 0s और 1s तक कैसे पहुंचेंगे। उदाहरण के लिए, टेक्स्ट के लिए ASCII और यूनिकोड।

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

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

प्रोसेसर लाकर . द्वारा निष्पादन चक्र प्रारंभ करता है मुख्य मेमोरी से निर्देश, फिर प्रोसेसर की नियंत्रण इकाई डिकोड उन निर्देशों को दो भागों में विभाजित किया गया है - ऑपरेशन कोड (ऑपोड) और ऑपरेंड।

ओपकोड आगे की कार्रवाई तय करता है जिसे एडीडी (जोड़), जेएमपी (कूद), आईएनसी (वृद्धि) आदि जैसे प्रदर्शन करने की आवश्यकता होती है। ऑपरेंड वे मान (या मेमोरी लोकेशन) हैं जिन पर वह ऑपरेशन किया जाएगा।

डिकोड किए गए निर्देश निष्पादन के लिए अंकगणित और तर्क इकाई (ALU) को भेजे जाते हैं . एएलयू में, ऑपरेंड पर ओपकोड के आधार पर निर्देश निष्पादित किया जाता है और परिणाम स्मृति में वापस संग्रहीत किया जाता है।

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

ADD eax, 42 . के लिए मशीन कोड लाने पर मेमोरी खत्म होने से, निर्देश डिकोड हो जाता है। डिकोडेड आउटपुट कहता है कि ओपकोड ADD . है और ऑपरेंड eax . हैं और 42 .

eax एक रजिस्टर है - प्रोसेसर में इनबिल्ट एक मेमोरी लोकेशन जिसे प्रोसेसर द्वारा तुरंत एक्सेस किया जा सकता है। eax रजिस्टर को अधिकांश प्रोसेसर में एक्युमुलेटर कहा जाता है।

ADD eax, 42 असेंबली कोड को eax . के वर्तमान मान में 42 जोड़ने के लिए डिज़ाइन किया गया है रजिस्टर (संचयक) और उस राशि को eax . में संग्रहीत करता है . यह eax = eax + 42 है .

मान लीजिए कि वर्तमान में eax 20 है। इसका मतलब है कि eax . का मान निष्पादित करने के बाद ADD eax, 42 20 + 42 =62 होगा।

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों
EDVAC अमेरिकी सेना की बैलिस्टिक अनुसंधान प्रयोगशाला के लिए बनाया गया सबसे पहला इलेक्ट्रॉनिक बाइनरी कंप्यूटर था। (छवि स्रोत, सार्वजनिक डोमेन)।

EDVAC जैसे प्रारंभिक कंप्यूटरों का डिज़ाइन कठिन गणितीय गणनाओं को आसान और तेज़ बनाने की इच्छा से शुरू हुआ।

कंप्यूटर की गणना करने की पूरी जिम्मेदारी एडर्स के कंधों पर है - सर्किट जो दो नंबर जोड़ते हैं। ऐसा इसलिए है क्योंकि परिष्कृत संचालन जैसे घटाव, गुणा और भाग अपने सर्किट में योजक का उपयोग करते हैं।

अंततः कंप्यूटर तर्क क्षमताओं वाली एक तेज़ अंकगणितीय मशीन हैं। द्विआधारी अंकगणितीय डिज़ाइन (सकारात्मक और विशेष रूप से नकारात्मक पूर्णांकों की) की चुनौतियों और सुंदरता को समझना कंप्यूटर प्रोसेसर में सबसे मौलिक अवधारणाओं में से एक है .

आइए पहले देखें कि बाइनरी में दशमलव संख्याओं का प्रतिनिधित्व कैसे किया जाता है और दो बाइनरी मानों को कैसे जोड़ा जाता है। फिर हम सुंदरता की खोज शुरू करेंगे।

बाइनरी सिस्टम कैसे काम करता है

अगर मैं आपको 872500 पढ़ने के लिए कहूं , आप शायद कहेंगे 872.5K . आइए देखें कि हमारा दिमाग ऐसा कैसे करता है।

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

हम दायें से पहले अंक को एक का स्थान देते हैं, फिर दहाई का स्थान दायें से दूसरे को, सौवां से तीसरा, और इसी तरह, हर बार 10 की शक्ति से बढ़ते हुए।

प्रत्येक स्थान पर 10 की ये शक्तियाँ स्थानों के भार हैं। सौवें स्थान का भार सौ है। हम प्रत्येक स्थान के अंकों को उनके स्थान के भार से गुणा करते हैं और एक पूर्ण संख्या प्राप्त करने के लिए उन सभी का योग करते हैं।

ऊपर दिए गए आरेख में, आप देख सकते हैं कि 10^0 से शुरू होकर प्रत्येक स्थान के भार की वृद्धि 10 के घात में है और 10^5 . के माध्यम से जा रहा है . इसलिए दशमलव को आधार दस प्रणाली कहा जाता है।

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

बाइनरी में, प्रत्येक स्थान का वजन 2 की शक्ति से बढ़ता है। इसका मतलब है कि उस स्थान का वजन 2^0 से शुरू होता है। और 2^something . पर समाप्त होता है . बस इतना ही फर्क है।

00110101 दशमलव में 53 का अनुवाद होता है। कंप्यूटर बाइनरी की उसी तरह व्याख्या करते हैं जैसे हम मनुष्य दशमलव की व्याख्या करते हैं, जो कि प्रत्येक स्थान के अंक को उसके वजन से गुणा करना और उनका योग करना है।

1s और 0s कैसे जोड़ें

जोड़ बाइनरी में वैसे ही काम करता है जैसे दशमलव में किया जाता है। आइए इसे एक उदाहरण के माध्यम से देखते हैं। हम दो बाइनरी नंबर जोड़ेंगे:1101 (13) और 1100 (12).

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

जैसा कि हम दशमलव प्रणाली में करते हैं, हम एक के स्थान से शुरू करते हैं (2^0 ) 1 और 0 को जोड़ने पर हमें 1 मिलता है। तो हम वहां 1 डालते हैं। मेरे साथ रहो और आपको पूरी तस्वीर मिल जाएगी।

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

0 जमा 0 0 है। आगे बढ़ रहा है।

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

1 जमा 1 2 होता है और 2 बाइनरी में 10 . के रूप में दर्शाया जाता है . हम 1 को अगले स्थान पर ले जाते हैं और वर्तमान स्थान के परिणामस्वरूप 0 रखते हैं। क्या यह दशमलव जोड़ में किसी स्थान पर 9 से अधिक नहीं है?

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

हमारे पास दो 1s हैं और एक 1 जिसे पिछले स्थान से आगे ले जाया गया था, इसलिए कुल तीन 1s हैं। उनका योग 3 होगा, और बाइनरी 3 में 11 . है इसलिए हम 11 write लिखते हैं . अंतिम परिणाम निकला 11001 या 25 दशमलव रूप में, जो वास्तव में 13 + 12 है।

उपरोक्त गणना मानती है कि परिणाम को संग्रहीत करने के लिए हमारे पास पांच बिट उपलब्ध हैं। यदि एक 4-बिट कंप्यूटर यह जोड़ देता है, तो परिणाम को संग्रहीत करने के लिए उसके पास केवल चार बिट उपलब्ध होंगे।

उस पांचवें बिट को अतिप्रवाह . कहा जाएगा 4-बिट कंप्यूटर में। पूर्णांक अंकगणित में, अतिप्रवाह बिट को अनदेखा या त्याग दिया जाता है। तो हमें 1001 मिल गया होता (9) हमारे परिणाम के रूप में यदि हम 4-बिट कंप्यूटर का उपयोग कर रहे थे।

बाइनरी अंकगणितीय डिज़ाइन की सुंदरता

आगे बढ़ने से पहले हमें दो महत्वपूर्ण शब्दों को समझना होगा कम से कम महत्वपूर्ण बिट और सबसे महत्वपूर्ण बिट

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

सबसे दाईं ओर वाला बिट सबसे कम महत्वपूर्ण बिट होता है क्योंकि इसका स्थान भार सबसे छोटा है (2^0 ) और सबसे बाईं ओर वाला बिट सबसे महत्वपूर्ण बिट है क्योंकि इसका स्थान भार उच्चतम है (2^7 )।

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

शुक्र है, हमारे पास नकारात्मक संख्याएं भी हैं।

सीपीयू के अंकगणितीय डिजाइन की सुंदरता नकारात्मकता में निहित है।

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

कृपया ध्यान दें कि नीचे के खंडों में हम अवधारणाओं को समझने के लिए 4-बिट कंप्यूटर के साथ काम करेंगे, जिसका अर्थ है कि पांचवें बिट को अतिप्रवाह माना जाएगा। अंकगणित करने के लिए 16-बिट, 32-बिट या 64-बिट जैसे सभी CPU आर्किटेक्चर पर समान सिद्धांत लागू होते हैं।

साइन परिमाण एन्कोडिंग दृष्टिकोण

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

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

0 साइन बिट में एक सकारात्मक मान का प्रतिनिधित्व करता है और 1 एक नकारात्मक मूल्य का प्रतिनिधित्व करता है। शेष बिट्स हमें वास्तविक परिमाण बताते हैं।

1101 . में , साइन बिट 1 . है , तो संख्या ऋणात्मक है। 101 दशमलव में 5 के बराबर होता है। तो 1101 दशमलव में -5 की गणना करेगा।

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों
सभी संभावित संख्याएं जिन्हें साइन बिट एन्कोडिंग स्कीम के साथ चार बिट्स द्वारा दर्शाया जा सकता है

उपरोक्त आरेख में आप उन सभी पूर्णांकों को देख सकते हैं जिन्हें इस एन्कोडिंग दृष्टिकोण का उपयोग करके चार बिट्स द्वारा दर्शाया जा सकता है। इस बिंदु तक सब अच्छा लग रहा है।

लेकिन अगर हम बारीकी से देखें, तो हम इस एन्कोडिंग योजना में एक बहुत ही गंभीर डिज़ाइन समस्या देख सकते हैं। आइए उस समस्या का सामना करें।

आइए एक सकारात्मक और एक नकारात्मक संख्या जोड़ें। उदाहरण के लिए हम +4 और -1 जोड़ेंगे। हमारा उत्तर होना चाहिए (+4) + (-1) = (+3) यानी 0011

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

देखिए, परिणाम 1101 . है (-5)। वास्तविक उत्तर 0011 . होना चाहिए (+3)। यदि हम इस दृष्टिकोण को एक प्रोसेसर पर लागू करते हैं तो हमें इस मुद्दे से निपटने के लिए तर्क जोड़ने की आवश्यकता होगी, और इंजीनियरों को उनके तर्क में अतिरिक्त जटिलता से नफरत है।

जैसे-जैसे हम और सर्किट जोड़ते हैं, बिजली की खपत बढ़ती है और प्रदर्शन प्रभावित होता है।

यह आधुनिक ट्रांजिस्टर-आधारित कंप्यूटरों के लिए एक तुच्छ समस्या की तरह लग सकता है।

लेकिन ईडीवीएसी जैसे शुरुआती कंप्यूटरों के बारे में सोचें जो हजारों लोगों द्वारा संचालित किलोवाट में बिजली की खपत करने वाले हजारों वैक्यूम ट्यूबों पर एक दिन में चलते थे। और इन्हें बनाने में सरकार ने लाखों खर्च किए।

उन दिनों अतिरिक्त सर्किट और वैक्यूम ट्यूब लगाने का मतलब हजारों डॉलर और रखरखाव की गंभीर समस्या थी।

इसलिए इंजीनियरों को एक बेहतर एन्कोडिंग डिज़ाइन के बारे में सोचना पड़ा।

अब, उस सुंदरता को प्रकट करने का समय आ गया है जो इस समस्या से निपटेगी और हमारे सिस्टम को सरल, अधिक प्रदर्शनकारी और कम शक्ति की भूखी बनाएगी।

एक सुंदर एन्कोडिंग सिस्टम प्रवेश करता है और CPU चमकता है ❤️

इस एन्कोडिंग योजना में, पिछले एक की तरह, सबसे बाईं बिट एक संकेत बिट के रूप में कार्य करती है - लेकिन कुछ कला के साथ नकारात्मक संख्याओं का प्रतिनिधित्व करने के लिए शामिल है।

धनात्मक संख्याओं को ठीक उसी तरह दर्शाया जाता है जैसे पिछली एन्कोडिंग योजना:एक अग्रणी 0 परिमाण के लिए शेष बिट्स के बाद। उदाहरण के लिए, इस एन्कोडिंग योजना में भी, 6 को 0110 . के रूप में दर्शाया जाएगा .

एक ऋणात्मक संख्या को निरूपित करने के लिए उसके धनात्मक प्रतिरूप में द्वि-चरणीय गणित प्रक्रिया चलाई जाती है। मतलब -6 का प्रतिनिधित्व करने के लिए हम बाइनरी में -6 तक पहुंचने के लिए +6 पर दो चरणों वाली गणित प्रक्रिया करेंगे।

आइए देखें कि कैसे -6 बाइनरी में एन्कोड करेगा:

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

पिछले साइन परिमाण दृष्टिकोण में, +6 के ऋणात्मक की गणना करने के लिए, हमने बस साइन बिट को 0 से बदल दिया होगा। से 1 . 0110 (+6) बन जाएगा 1110 (-6)।

इस नई एन्कोडिंग योजना में, हम पहले बिट्स को उल्टा करते हैं। शून्य को एक में और एक को शून्य में बदलना। 0110 (+6) हो जाता है 1001 . बिट्स को उलटने को "एक का पूरक" कहा जाता है, इसलिए यहां हमने 0110 के पूरक की गणना की है परिणामस्वरूप 1001 . फिर...

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

हम 0001 जोड़ते हैं (+1) एक के पूरक के लिए हमें चरण एक से मिला (1001 ) परिणाम 1010 -6 का द्विआधारी प्रतिनिधित्व होगा। इस एन्कोडिंग योजना को दो का पूरक कहा जाता है। इसलिए ध्यान रखें कि एक धनात्मक पूर्णांक के दो के पूरक की गणना करने से हमें उसका ऋणात्मक प्रतिरूप प्राप्त होता है।

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

इनवर्टिंग बिट्स हमें एक का पूरक देता है। एक को एक के पूरक में जोड़ने से हमें दो के पूरक मूल बिट्स मिलते हैं जिनके साथ हमने शुरुआत की थी। सरल, है ना?

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों
सभी संभावित संख्याएं जिन्हें दो की पूरक एन्कोडिंग योजना के साथ चार बिट्स द्वारा दर्शाया जा सकता है

अब, देखते हैं कि यह एन्कोडिंग योजना इतनी सुंदर क्यों है। हम जोड़ देंगे 0100 (+4) और 1111 (-1).

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

देखें, हमें दो की पूरक एन्कोडिंग योजना के साथ सटीक परिणाम मिलता है। अब हम पूर्णांकों को उनके चिह्नों की चिंता किए बिना जोड़ सकते हैं।

हमने सीखा है कि कैसे एक ऋणात्मक पूर्णांक को दो के पूरक एन्कोडिंग के माध्यम से 0s और 1s में प्रदर्शित किया जा सकता है। अब मान लें कि हम ADD eax, -3 . निष्पादित करते हैं और ईएक्स रजिस्टर में वर्तमान मूल्य -1 है। तो ADD eax, -3 . के निष्पादन के बाद eax में मान -4 होगा (जो कि 1100 . है दो के पूरक एन्कोडिंग में)।

जब ऑपरेटिंग सिस्टम 1100 को पुनः प्राप्त करता है ईएक्स से उपयोगकर्ता को परिणाम प्रस्तुत करने के लिए, ऑपरेटिंग सिस्टम कैसे डिकोड करता है 1100 दशमलव के लिए? या मान लीजिए अगर हम एक प्रोग्रामर के रूप में 1100 . पर आते हैं , हम कैसे पता लगा सकते हैं कि कौन सी संख्या 1100 . है प्रतिनिधित्व करता है?

बेशक हम यह देखने के लिए प्रत्येक सकारात्मक पूर्णांक के दो पूरक की गणना नहीं कर सकते हैं कि हम 1100 पर कब हिट करते हैं . यह बहुत धीमा होगा।

बाइनरी को दशमलव में डीकोड करने के लिए प्रोग्रामर और ओएस दो के पूरक की एक सुंदर संपत्ति का उपयोग करते हैं।

जब हम एक धनात्मक संख्या के दो पूरक की गणना करते हैं, तो हमें इसका ऋणात्मक प्रतिपक्ष प्राप्त होता है। खैर, उल्टा भी सच है - जिसका अर्थ है कि एक ऋणात्मक संख्या के दो के पूरक की गणना करने से हमें इसका सकारात्मक प्रतिरूप मिलेगा। हम एक मिनट में इसका कारण देखेंगे।

सबसे पहले, आइए समझते हैं कि OS या प्रोग्रामर 1100 को कैसे डिकोड करेगा दशमलव तक।

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

1100 को पुनः प्राप्त करने पर ईएक्स रजिस्टर से, ओएस देखता है 1 साइन बिट के रूप में जो संकेत देता है कि पूर्णांक ऋणात्मक है। 1100 . के दो पूरक की गणना की जाती है जो 1100 . का सकारात्मक प्रतिरूप देता है जो 0100 . के रूप में सामने आता है (+4)। OS तब सकारात्मक प्रतिपक्ष पर एक ऋणात्मक चिह्न जोड़ता है और अंतिम उत्तर -4 के रूप में देता है। इस अनुच्छेद को एक बार फिर से पढ़ें और आप बेहतर समझ पाएंगे।

तब सीपीयू मुस्कुराता है और आज के लिए सुंदरता को अलविदा कहता है;)

सीपीयू अपनी मां से मिलने अपने घर गया है। अब हमारे पास टू कंप्लीमेंट की कला की आंतरिक कार्यप्रणाली पर चर्चा करने के लिए पर्याप्त समय है।

दो का पूरक एन्कोडिंग क्यों और कैसे काम करता है?

यदि मैं आपसे किसी संख्या का ऋणात्मक ज्ञात करने के लिए कहूँ, जैसे +42, तो +42 का ऋणात्मक ज्ञात करने का सबसे सरल तरीका क्या है?

यकीनन, सबसे आसान तरीका है कि संख्या को 0 से घटाया जाए, है ना? 0 - (+42) = -42 . यदि हम इसे दोहराते हैं, तो हम सकारात्मक मान पर वापस आ जाते हैं, 0 - (-42) = +42 . यह सारा गणित है जिस पर दो का पूरक आधारित है।

नकारात्मक पूर्णांकों के साथ माइक्रोप्रोसेसर रोमांस - सीपीयू अंकगणित डिजाइन का कैसे और क्यों

हम कर रहे हैं 10000 (दशमलव में, क्योंकि सबसे बाईं ओर 1 अतिप्रवाह है) घटा 0101 (+5)। हमें 1011 मिलता है वह है -5 दशमलव में दो के पूरक एन्कोडिंग में। ध्यान न दें कि घटाव कैसे किया जाता है। वह महत्वपूर्ण नहीं है। दो के पूरक के पीछे के अंतर्ज्ञान को समझना महत्वपूर्ण है।

10000 1111 + 0001 . के रूप में लिखा जा सकता है (इन दोनों को जोड़ने का प्रयास करें, आपको 10000 मिलेगा ) तो वास्तव में हम कर रहे हैं:

        10000       -   0101
=>  (1111 + 0001)   -   0101

उपरोक्त समीकरण को पुनर्व्यवस्थित करते हुए हम इसे इस प्रकार लिख सकते हैं:

    (1111 + 0001)  -  0101
=>  (1111 - 0101)  +  0001

Step 1: subtract 0101 from 1111

        1 1 1 1
       -0 1 0 1
       ---------
        1 0 1 0
        
       see, subtracting 0101 from 1111 is equivalent 
       to inverting the bits of 0101, as we got 1010 as a result. 

  
       
Step 2: add 0001 to the above result  

        1 0 1 0  ---> result of step 1
       +0 0 0 1
       ---------
        1 0 1 1      
       
       we get 1011 that is -5 in two's complement encoding.      

क्या आपने देखा कि दोनों की पूरक प्रणाली मूल रूप से 0 घटा संख्या करती है? बिट्स को उलटना और एक जोड़ना 0 से संख्या घटाने का एक तेज़ और चतुर तरीका है।

यही कारण है कि जब हम इसके दो पूरक की गणना करते हैं तो हमें एक ऋणात्मक संख्या का धनात्मक और एक धनात्मक संख्या का ऋणात्मक प्राप्त होता है - क्योंकि हम वास्तव में संख्या को 0 से घटा रहे हैं (0 - number )

1900 के दशक में कंप्यूटरों में केवल जोड़ अंकगणितीय तर्क हुआ करते थे क्योंकि दोनों की पूरक एन्कोडिंग योजना इतनी सुंदर है कि घटाव आसानी से किया जा सकता है।

उदाहरण के लिए, 100 में से 12 को घटाने के लिए, सीपीयू +12 के दो पूरक की गणना करता है जो -12 उत्पन्न करता है फिर हम -12 से 100 जोड़ते हैं जिससे हमें आवश्यक आउटपुट मिलता है।

बाइनरी में किसी संख्या का ऋणात्मक या इसके विपरीत खोजने के लिए हम सीधे 0 से घटाते क्यों नहीं हैं?

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

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

तो आइए इस खूबसूरत एन्कोडिंग योजना के लिए हमारे कंप्यूटर डिजाइनरों की सराहना करें - दोनों के पूरक ❤️।

अंतिम शब्द

मैंने खुद से वादा किया था कि मैं अपने द्वारा उत्पादित किसी भी शिक्षण सामग्री के लिए कभी भी शुल्क नहीं लूंगा। शिक्षा के लिए मैं जो कुछ भी करता हूं, चाहे वह एक साधारण लेख हो या पाठ्यक्रम या ईबुक, हमेशा 100% मुफ़्त और खुला रहेगा।

मैं उपयोगी संसाधन पोस्ट करता हूं और अपने ट्विटर अकाउंट पर सार्थक विचार साझा करता हूं। अगर आपने इस लेख से कुछ नया सीखा है तो आप मुझे वहां फॉलो कर सकते हैं और मुझे डीएम भेज सकते हैं। यह मेरा दिन बना देगा :)

हर डेवलपर, हर लेखक और हर इंसान किसी न किसी से सीखता है। मेरा मानना ​​है कि जिन लोगों और संसाधनों से हम सीखते हैं, उनका हवाला दिया जाना चाहिए और उनका प्रसार किया जाना चाहिए। यह उन अच्छे लोगों को हम सभी के लिए और अधिक करने के लिए प्रोत्साहित करता है। तो ये रहे मेरे अच्छे।

mycodeschool के अनिमेश ने मुझे इस आलेख में लिखी गई अवधारणाओं सहित किसी और से बेहतर प्रोग्रामिंग अवधारणाएं सिखाईं।

आंद्रे जेनिश, मेरे गुरु और मित्र, उनके समीक्षात्मक प्रयासों और निरंतर समर्थन के बिना, मैंने यह लेख नहीं लिखा होता।

हैप्पी लर्निंग!


  1. टीवी ऐप के साथ iPhone और iPad पर टीवी और फिल्में कैसे देखें

    टीवी ऐप पिछले कुछ समय से iPhone और iPad पर एक स्थिरता रहा है। यह 2017 में यूके में वापस आया जब इसने वीडियो ऐप को बदल दिया। टीवी ऐप अमेरिका में पहले भी आया था। वापस जब Apple ने पहली बार ऐप पेश किया, तो यह इतने सारे ऐप में देखने के लिए बहुत कुछ होने की समस्या के समाधान के रूप में तैनात था। नेटफ्लिक्स

  1. रेडिस एसएडीडी - सेट में तत्व कैसे बनाएं और जोड़ें

    इस ट्यूटोरियल में, हम सीखेंगे कि कमांड का उपयोग करके कुंजी पर संग्रहीत एक सेट मान में तत्वों को कैसे बनाया और जोड़ा जाए - SADD रेडिस-क्ली में। यदि डेटास्टोर में एक कुंजी मौजूद है, तो सभी निर्दिष्ट तत्वों को सेट में जोड़ा जाएगा (पहले से मौजूद तत्वों को अनदेखा करते हुए) अन्यथा सेट में जोड़ने से पहले ए

  1. Windows 10 में AutoPlay विकल्पों तक कैसे पहुंचें और कैसे काम करें

    Windows में आपको मिलने वाली सबसे पुरानी सुविधाओं में से एक ऑपरेटिंग सिस्टम को ऑटोप्ले कहा जाता है . यह Windows 98, Windows XP से अस्तित्व में रहा है फिर नीचे Vista पर जाएँ , विंडोज 7 और Windows 8, Windows 8.1 में ले जाया गया और अब Windows 10 में ! हालाँकि, Windows का केवल एक छोटा सा अंश उपय