क्या संख्या ६५५३५ के बारे में कुछ खास है?


11

2-1 और 2⁵ = 2⁵ (या? स्पष्ट रूप से?)

एक डेवलपर ने आज मुझसे पूछा कि बिटवाइज़ 65535 और 32 यानी 2 1-1 और 2? = क्या है? मैंने पहली बार अनायास 32 पर सोचा लेकिन यह आसान लग रहा था जिसके बारे में मैंने कई मिनटों तक सोचा और फिर 32 का जवाब दिया। 32 ऐसा लगता है कि सही उत्तर है लेकिन कैसे? 65535 = 255-1 = 1111111111111111 (लेकिन यह सही नहीं लगता है क्योंकि यह बाइनरी नंबर सभी को -1 (?)), 32 = 100000 होना चाहिए, लेकिन मैं इसे अपने सिर में परिवर्तित नहीं कर सका, जहां से मैं 32 साल का था, जब से मैं था? किसी बात का जवाब देना। क्या उत्तर 32 वास्तव में तुच्छ है? उसी तरह 2¹⁶-1 और 2 the-1 = 31 है? डेवलपर ने मुझसे 65535 के बारे में क्यों पूछा?

बाइनरी जो मुझे मूल्यांकन करने के लिए कहा गया था वह 1111111111111111 और 100000 था लेकिन मुझे समझ में नहीं आता है कि 1111111111111111 -1 क्यों नहीं है। क्या यह -1 नहीं होना चाहिए? क्या 65535 एक संख्या है जो अतिप्रवाह देती है और मुझे यह कैसे पता चलेगा?


3
कुछ खास होना चाहिए। यह बीयर के लिए मुझे 56 6635, चेक राष्ट्रीय मानक की याद दिलाता है। हम्मम ... एक बीयर के लिए समय।
joshp

5
आप बहुत सारे विस्फोट करते हैं: 65535 केवल 16-बिट दो के पूरक अंकगणित में -1 देता है। यह 16-बिट के पूरक अंकगणित में -0 और 32-बिट दो के पूरक में 65535 और किसी के पूरक अंकगणित में देता है।
मौविसील

3
यह TCP पोर्ट की ऊपरी सीमा है।
रेने लिडर

जवाबों:


23

संख्या को इस मामले में एक अहस्ताक्षरित पूर्णांक के रूप में माना जाता है जिसका अर्थ है कि सभी बिट सेट -1 का उत्पादन नहीं करेंगे (यदि यह हस्ताक्षर किया गया था तो हाँ, आप सही होंगे)। तो सभी 16 बिट सेट आपको 65535 देंगे।

दिलचस्प बात यह है कि हालांकि, तर्कपूर्ण बिट-ऑपरेशन करते समय हस्ताक्षरित राज्य एक कारक नहीं है। बिट्स स्वयं हस्ताक्षरित नहीं हैं क्योंकि वे कंप्यूटर में सबसे कम घटक हैं। यह सीपीयू ऑपरेशन द्वारा निर्दिष्ट है अगर बिट्स पूर्व में। एक रजिस्टर पर हस्ताक्षर किए या अहस्ताक्षरित माना जाएगा।

सबसे महत्वपूर्ण बिट (MSB) को सही पर सेट करके नकारात्मक संख्या उत्पन्न की जाती है। यदि संख्या को हस्ताक्षरित (जो "पक्ष" के रूप में माना जाता है, या जो बाहरी बिट सेट किया जाएगा, वह सीपीयू आर्किटेक्चर के आधार पर भिन्न होता है, यानी बड़ा-एंडियन / लिटिल-एंडियन)। ) का है।


9
अधिकांश आधुनिक मशीनें बिट्स को फ़्लिप करके और एक को जोड़कर नकारात्मक में बदल जाती हैं: 2 का पूरक। बस एक बिट सेट करने से आपको +0 और -0 की समस्या होती है।
जेम्स

1
यह जरूरी नहीं कि एक समस्या है। 1 का पूरक परिणाम की परवाह किए बिना शून्य की ओर बढ़ता है। 2 का पूरक -infinity की ओर बढ़ता है। कुछ अनुप्रयोगों में, यह आपको परेशानी में डाल सकता है।
जॉन आर। स्ट्रॉहम

18

यह है तुच्छ। बाइनरी में 65535 सभी हैं, इसलिए 65535 से कम किसी भी एक्स के साथ यह आपको एक्स देगा।


10

अपने प्रश्न के दूसरे भाग का उत्तर देना। आपने इसे टैग कर दिया हैइसलिए, 32 बिट्स में 65535 है 00000000000000001111111111111111, हस्ताक्षरित या अहस्ताक्षरित यह -1 नहीं है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.