2's Complement कैलकुलेटर क्या है?
2's complement कैलकुलेटर संख्याओं को डेसिमल, बाइनरी और हेक्साडेसिमल के बीच बदलता है और साथ ही यह भी दिखाता है कि कंप्यूटर के अंदर ऋणात्मक मान कैसे संग्रहित किए जाते हैं। टू'ज़ कॉम्प्लीमेंट वह मानक तरीका है जिसका उपयोग लगभग सभी आधुनिक प्रोसेसर signed integers को स्टोर करने के लिए करते हैं, इसलिए इसे समझना प्रोग्रामर, इलेक्ट्रॉनिक्स के विद्यार्थियों और डिजिटल लॉजिक से जुड़े हर व्यक्ति के लिए ज़रूरी है। यह टूल आपको किसी भी base में संख्या डालने, bit width (8, 16 या 32 बिट) चुनने और तुरंत उसका टू'ज़ कॉम्प्लीमेंट रूप उसके डेसिमल मान के साथ देखने की सुविधा देता है।
कैलकुलेटर का उपयोग कैसे करें
- इनपुट फ़ील्ड में अपनी संख्या डालें — यह डेसिमल, बाइनरी या हेक्साडेसिमल स्वीकार करता है।
- ज़रूरत हो तो अपने इनपुट का base चुनें।
- bit width चुनें: 8-बिट, 16-बिट या 32-बिट।
- परिणाम पढ़ें: बाइनरी, हेक्स और signed डेसिमल मान अपने आप दिखाई देते हैं।
bit width महत्वपूर्ण है क्योंकि यह तय करता है कि कितनी रेंज तक के मान संग्रहित किए जा सकते हैं। उदाहरण के लिए, एक 8-बिट signed integer -128 से 127 तक के मान रख सकता है, जबकि एक 16-बिट मान -32,768 से 32,767 तक फैला होता है।
फ़ॉर्मूला की व्याख्या
किसी बाइनरी संख्या का टू'ज़ कॉम्प्लीमेंट निकालने के लिए दो चरण अपनाएं:
$$\text{Twos Complement} = \left(\sim \text{Number}_{\,2}\right) + 1 \pmod{2^{\text{Bit Width}}}$$- हर bit को उलट दें (हर 0 को 1 और हर 1 को 0 में बदलें)। यही one's complement है।
- परिणाम में 1 जोड़ें।
सबसे बाईं ओर का bit sign bit का काम करता है: 0 का मतलब धनात्मक और 1 का मतलब ऋणात्मक। किसी ऋणात्मक डेसिमल को टू'ज़ कॉम्प्लीमेंट में बदलने का फ़ॉर्मूला है \(2^{n} + \text{value}\), जहाँ \(n\) bit width है।
हल किया गया उदाहरण
-5 को 8-बिट टू'ज़ कॉम्प्लीमेंट में बदलें:
- बाइनरी में +5 से शुरू करें:
0000 0101। - bits को उलटें:
1111 1010। - 1 जोड़ें:
1111 1011।
इसलिए -5 को 1111 1011 के रूप में संग्रहित किया जाता है, जो हेक्साडेसिमल में FB के बराबर है। जाँच करें: \(251 - 256 = -5\) (unsigned मान) में से 256 घटाने पर।
बिट चौड़ाई के अनुसार हस्ताक्षरित पूर्णांक श्रेणियाँ
टू'ज कंप्लिमेंट कंप्यूटरों द्वारा हस्ताक्षरित पूर्णांकों का प्रतिनिधित्व करने का मानक तरीका है। दी गई बिट चौड़ाई \(n\) के लिए, एक बिट साइन बिट के रूप में कार्य करता है, इसलिए प्रतिनिधित्व योग्य हस्ताक्षरित श्रेणी \(-2^{n-1}\) से \(2^{n-1}-1\) तक है, जबकि समान बिट्स की एक अहस्ताक्षरित व्याख्या \(0\) से \(2^{n}-1\) तक को कवर करती है। सभी अंकगणित मॉड्यूलो \(2^{n}\) में लपेटते हैं।
| बिट चौड़ाई \(n\) | हस्ताक्षरित न्यूनतम \(-2^{n-1}\) | हस्ताक्षरित अधिकतम \(2^{n-1}-1\) | अहस्ताक्षरित अधिकतम \(2^{n}-1\) | मॉड्यूलस \(2^{n}\) |
|---|---|---|---|---|
| 8 | -128 | 127 | 255 | 256 |
| 16 | -32,768 | 32,767 | 65,535 | 65,536 |
| 32 | -2,147,483,648 | 2,147,483,647 | 4,294,967,295 | 4,294,967,296 |
| 64 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 | 18,446,744,073,709,551,615 | 18,446,744,073,709,551,616 |
उदाहरण के लिए, 8-बिट फॉर्म में दशमलव 5 का टू'ज कंप्लिमेंट 251 है जब एक अहस्ताक्षरित बाइट के रूप में पढ़ा जाता है, जो हस्ताक्षरित मान के रूप में \(-5\) का प्रतिनिधित्व करता है।
सामान्य 8-बिट मानों के लिए दशमलव–बाइनरी–हेक्स संदर्भ
निम्नलिखित तालिका प्रतिनिधि हस्ताक्षरित दशमलव मानों को उनके 8-बिट टू'ज कंप्लिमेंट बाइनरी और हेक्साडेसिमल रूपों में मैप करती है। ऋणात्मक संख्याओं के पास सबसे महत्वपूर्ण बिट 1 पर सेट है। किसी मान को नकारने के लिए, सभी 8 बिट्स को उलटें और 1 जोड़ें।
| हस्ताक्षरित दशमलव | 8-बिट बाइनरी | हेक्स | अहस्ताक्षरित मान |
|---|---|---|---|
| -128 | 1000 0000 | 0x80 | 128 |
| -64 | 1100 0000 | 0xC0 | 192 |
| -5 | 1111 1011 | 0xFB | 251 |
| -1 | 1111 1111 | 0xFF | 255 |
| 0 | 0000 0000 | 0x00 | 0 |
| 1 | 0000 0001 | 0x01 | 1 |
| 5 | 0000 0101 | 0x05 | 5 |
| 64 | 0100 0000 | 0x40 | 64 |
| 127 | 0111 1111 | 0x7F | 127 |
बाइनरी फॉर्म को स्वतंत्र रूप से सत्यापित करने के लिए, आप 8-बिट पैटर्न 11111011 को दशमलव में वापस परिवर्तित कर सकते हैं, जो एक अहस्ताक्षरित बाइट के रूप में 251 के बराबर है (हस्ताक्षरित के रूप में \(-5\) व्याख्यायित)।
मुख्य शर्तें और परिभाषाएँ
- बिट चौड़ाई
- एक पूर्णांक को संग्रहीत करने के लिए उपयोग किए जाने वाले बाइनरी अंकों की संख्या (आमतौर पर 8, 16, 32, या 64)। यह मॉड्यूलस \(2^{n}\) को ठीक करता है और इसलिए प्रतिनिधित्व योग्य मानों की श्रेणी को निर्धारित करता है।
- साइन बिट
- एकल बिट जो इंगित करता है कि एक हस्ताक्षरित संख्या ऋणात्मक (1) है या गैर-नकारात्मक (0) है। टू'ज कंप्लिमेंट में यह सर्वोच्च-क्रम बिट है।
- सबसे महत्वपूर्ण बिट (MSB)
- एक बाइनरी संख्या में बाईं ओर सबसे अधिक मूल्य वाला बिट। एक हस्ताक्षरित टू'ज कंप्लिमेंट मान में MSB साइन बिट के रूप में दोहरा काम करता है।
- वन'ज कंप्लिमेंट
- एक संख्या का बिटवाइज व्युत्क्रम — हर 0 1 बन जाता है और हर 1 0 बन जाता है (\(\overline{B}\))। यह टू'ज कंप्लिमेंट बनाने के लिए 1 जोड़ने से पहले मध्यवर्ती चरण है।
- टू'ज कंप्लिमेंट
- प्रमुख हस्ताक्षरित-पूर्णांक एन्कोडिंग: एक मान को नकारने के लिए सभी बिट्स को उलटें और 1 जोड़ें, अर्थात \(\overline{B}+1 \pmod{2^{n}}\)। यह शून्य का एकल प्रतिनिधित्व देता है और समान हार्डवेयर को हस्ताक्षरित और अहस्ताक्षरित संख्याएँ जोड़ने देता है।
- ओवरफ्लो / रैपअराउंड
- जब कोई परिणाम बिट चौड़ाई के लिए प्रतिनिधित्व योग्य श्रेणी से अधिक हो जाता है तो क्या होता है; मान मॉड्यूलो \(2^{n}\) के चारों ओर लपेटता है। उदाहरण के लिए, 8-बिट अधिकतम 127 में 1 जोड़ना -128 तक लपेटता है।
- हस्ताक्षरित बनाम अहस्ताक्षरित पूर्णांक
- एक हस्ताक्षरित पूर्णांक टू'ज कंप्लिमेंट का उपयोग करके नकारात्मक का प्रतिनिधित्व कर सकता है (श्रेणी \(-2^{n-1}\) से \(2^{n-1}-1\) तक); एक अहस्ताक्षरित पूर्णांक हर बिट पैटर्न को गैर-नकारात्मक के रूप में मानता है (श्रेणी \(0\) से \(2^{n}-1\) तक)। बिट्स समान हैं — केवल व्याख्या भिन्न है।
अक्सर पूछे जाने वाले प्रश्न
कंप्यूटर टू'ज़ कॉम्प्लीमेंट का उपयोग क्यों करते हैं? इससे जोड़ और घटाव एक ही सर्किट से किए जा सकते हैं, और sign-magnitude या one's complement के विपरीत यहाँ शून्य का केवल एक ही रूप होता है।
अगर मेरी संख्या bit width के लिए बहुत बड़ी हो तो क्या होगा? मान overflow होकर wrap around हो जाता है, जिससे अप्रत्याशित परिणाम मिलता है। इससे बचने के लिए अधिक चौड़ी bit width चुनें।
वापस सामान्य डेसिमल में कैसे बदलें? अगर sign bit 1 है, तो फिर से टू'ज़ कॉम्प्लीमेंट लें और ऋणात्मक चिह्न लगाएं; अगर यह 0 है, तो इसे सामान्य बाइनरी संख्या की तरह पढ़ें।