टू'ज़ कॉम्प्लिमेंट कैलकुलेटर क्या है?
टू'ज़ कॉम्प्लिमेंट वह मानक तरीका है जिससे कंप्यूटर एक निश्चित बिट संख्या में साइन्ड (धनात्मक और ऋणात्मक) पूर्णांकों को संग्रहित करते हैं। यह कैलकुलेटर एक दशमलव संख्या और n-बिट रजिस्टर चौड़ाई लेता है, और फिर दिखाता है कि वह मान टू'ज़ कॉम्प्लिमेंट बिट पैटर्न के रूप में कैसे स्टोर होता है, वे बिट्स किस अनसाइन्ड मान को दर्शाते हैं, और उन्हीं बिट्स की व्याख्या साइन्ड संख्या के रूप में कैसे की जाती है। यह धनात्मक और ऋणात्मक दोनों तरह के इनपुट के लिए काम करता है।
इसका उपयोग कैसे करें
जिस दशमलव मान को आप एनकोड करना चाहते हैं वह दर्ज करें और बिट्स की संख्या चुनें (आमतौर पर 8, 16, 32)। कैलकुलेटर मॉड्यूलो अंकगणित का उपयोग करके मान को n-बिट रजिस्टर में लपेट देता है, बाइनरी रूप दिखाता है, और साइन्ड व्याख्या को डीकोड करता है। ऋणात्मक इनपुट अपने आप उनके टू'ज़ कॉम्प्लिमेंट रूप में स्टोर हो जाते हैं।
फ़ॉर्मूला समझें
किसी मान x को n बिट्स में स्टोर करने के लिए, स्टोर किया गया (अनसाइन्ड) पैटर्न इस तरह निकालें:
$$\text{stored} = \left(\left(x \bmod 2^{n}\right) + 2^{n}\right) \bmod 2^{n}$$किसी स्टोर किए गए मान का टू'ज़ कॉम्प्लिमेंट (नेगेशन) होता है
$$\text{twos} = \left(2^{n} - \text{stored}\right) \bmod 2^{n}$$n-बिट पैटर्न के साइन्ड अर्थ को डीकोड करने के लिए: यदि पैटर्न \(2^{n-1}\) से बड़ा या बराबर है तो मान \(\text{pattern} - 2^{n}\) होगा (ऋणात्मक), अन्यथा मान स्वयं वही पैटर्न होगा।
हल किया गया उदाहरण
-5 को 8 बिट्स में एनकोड करें। यहाँ \(2^{8} = 256\), इसलिए $$\text{stored} = \left(\left(-5 \bmod 256\right) + 256\right) \bmod 256 = 251$$ बाइनरी में \(251 = 11111011\)। 251 को डीकोड करें: चूँकि \(251 \ge 2^{7}\ (128)\), साइन्ड मान होगा \(251 - 256 = -5\)। 251 का टू'ज़ कॉम्प्लिमेंट है \(\left(256 - 251\right) \bmod 256 = 5\), जो परिमाण से मेल खाता है।
अक्सर पूछे जाने वाले सवाल
ऋणात्मक संख्याएँ बड़े बाइनरी पैटर्न जैसी क्यों दिखती हैं? शुरुआती बिट्स 1 होते हैं; n-बिट साइन्ड अंकगणित में सबसे आगे का 1 ऋणात्मक संख्या का संकेत देता है, इसलिए \(11111011\) का मान -5 है, न कि 251।
n बिट्स में कौन-सी रेंज समा सकती है? साइन्ड मान \(-2^{n-1}\) से लेकर \(2^{n-1} - 1\) तक होते हैं। 8 बिट्स के लिए यह -128 से 127 तक है।
अगर मेरी संख्या बहुत बड़ी हो तो क्या होगा? रजिस्टर से बाहर के मान मॉड्यूलो ऑपरेशन के ज़रिए चारों ओर लपेट जाते हैं (ओवरफ़्लो), ठीक वैसे ही जैसे असली हार्डवेयर में होता है।