सवाल "256" का द्विआधारी प्रतिनिधित्व क्या है? [बन्द है]


आप दशमलव को द्विआधारी और बाइनरी में दशमलव में परिवर्तित कर सकते हैं। लेकिन आप "256" संख्या का प्रतिनिधित्व कैसे कर सकते हैं?

255 = 11111111

1 बाइट में 8 से अधिक बाइनरी अंक (बिट्स) नहीं हो सकते हैं। यह कैसे हो सकता है?


14
2017-08-19 13:11


मूल


जैसा कि @ गंभीर पहले ही कहा गया है। आपको एक और बिट की आवश्यकता है, क्योंकि कंप्यूटर 0 से गिनती शुरू करते हैं। वास्तविक दुनिया में "हाथ भाषा" में 11 या "एक और व्यक्ति" (बाइट) है :) - SOMN
मैंने इसे "असली सवाल नहीं" के रूप में बंद कर दिया क्योंकि यह कहना मुश्किल है कि आप वास्तव में क्या जानना चाहते हैं। क्या आप किसी संख्या के द्विआधारी प्रतिनिधित्व को जानना चाहते हैं? क्या आप सोच रहे हैं कि यह कैसे संभव है कि एक संख्या भी मौजूद है भले ही यह बाइट में फिट न हो? क्या आप इस बारे में सोच रहे हैं कि बिट्स और बाइट्स में डेटा कैसे संग्रहीत किया जाता है? हां, 1 बाइट 8 बिट से अधिक नहीं रख सकता है, क्योंकि यह बाइट की परिभाषा है। लेकिन यह सामान्य रूप से संख्याओं पर कोई सीमा लागू नहीं करता है। - Der Hochstapler
आप 8-बिट पर 256 का प्रतिनिधित्व नहीं कर सकते हैं। - Overmind


जवाब:


आप बाइनरी में 256 का प्रतिनिधित्व करने के लिए पूछते हैं, लेकिन मुझे लगता है कि आप सोच रहे हैं कि क्यों लोग कहते हैं कि बाइट 256 अलग-अलग नंबरों को स्टोर कर सकते हैं, जब इसकी सबसे बड़ी संख्या 255 है। क्लाउडियो ने कहा, कंप्यूटर 0 पर गिनती शुरू करते हैं, इसलिए 0 वास्तव में पहला नंबर है, 1 दूसरा है, 2 तीसरा है ... 255 256 वां है।

इसके अलावा, 11111111 हस्ताक्षर बाइट्स के लिए केवल 255 है। जब आपके पास हस्ताक्षरित बाइट होता है (एक हस्ताक्षरित मान वह होता है जो नकारात्मक मान रख सकता है), 11111111 वास्तव में -1 है। देख http://en.wikipedia.org/wiki/Two's_complement। जिस तरह से दो पूरक पूरक होते हैं, सकारात्मक संख्या में ऋणात्मक संख्या को 0 में जोड़ते हैं। जैसा कि अन्य लोगों ने कहा है, अगर हम 11111111 पर थोड़ा जोड़ते हैं, और आपका डेटाटाइप केवल 8 बिट्स का समर्थन कर सकता है, तो आखिरी बिट बह जाएगा और आपको छोड़ देगा 0. हस्ताक्षरित बाइट्स के लिए, मान -128 से 127 तक हैं। 128 नकारात्मक संख्या + 0 + 127 सकारात्मक संख्या = 256 कुल संख्या।

हस्ताक्षरित मानों के लिए, पहला बिट "साइन" बिट है। यदि यह बिट सेट है, तो संख्या ऋणात्मक है। 10000000 नकारात्मक है, 01000000 सकारात्मक है, 11111111 नकारात्मक है, 01111111 सकारात्मक है ...

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

Windows Calculator showing 256 in decimal and binary


39
2017-08-19 14:15





वैसे आपको इसका प्रतिनिधित्व करने के लिए 2 बाइट्स चाहिए। 256 = 00000001 00000000


12
2017-08-19 13:14





जैसा कि आप पहले ही जानते हैं, 255 डी (दशमलव) 11111111 बी (बाइनरी) के बराबर है। यदि अब आप मूल्य में 1 जोड़ना चाहते हैं, तो दो संभावनाएं हैं:

या तो आपके पास केवल 8 बिट हैं। इस मामले में, एक तथाकथित बाढ़ हो जाता। तो "आंतरिक रूप से", 1 जोड़ा जाएगा जिसके परिणामस्वरूप 100000000b (9 बिट्स में 256 डी) होगा। लेकिन क्योंकि आपके पास केवल 8 बिट उपलब्ध हैं, निचले 8 बिट्स "लौटाए जाएंगे"। तो आप 0 डी = 0 बी के साथ समाप्त होते हैं (एक विशेष ओवरफ्लो ध्वज अधिकांश कंप्यूटर आर्किटेक्चर पर सेट किया जाएगा, जैसे साइड नोट के रूप में।)

इसके बारे में सोचें अपनी उंगलियों के साथ गिनती के समान। कल्पना करें कि आपकी उंगलियां 9 डी दिखाती हैं। अब आप एक और उंगली जोड़ते हैं। आप 10 के साथ समाप्त होते हैं। यदि आप एक और जोड़ना चाहते हैं तो आप क्या करते हैं?

दूसरी संभावना यह है कि आपके पास 8 से अधिक बिट्स उपलब्ध हैं। इस मामले में आप शुरुआत में एक और अंक जोड़ सकते हैं और परिणाम वास्तव में 100000000b = 256d होगा।

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

लेकिन 8 बिट्स एक बाइट बनाते हैं, वैसे ही बड़ी डेटाटाइप भी हैं। 2 बाइट एक शब्द बनाते हैं (16 बिट्स), दो शब्द (चार बाइट्स, 32 बिट्स) एक डबल शब्द बनाते हैं। और आजकल मानक 64 बिट आर्किटेक्चर में 64 बिट डेटाटाइप (तथाकथित रजिस्टर्स) भी हैं।


11
2017-08-19 13:26



हां, और कंप्यूटर उन 64 बिट्स के बारे में 8 अलग बाइट्स के समूह के रूप में नहीं सोचता है, लेकिन 64 बिट्स वाली एक इकाई के रूप में। उदाहरण के लिए, यदि आपने मूल्यों पर हस्ताक्षर किए हैं तो उन 64 बिट्स में से केवल एक साइन बिट है। - Mr Lister


यह 100000000 है और इसे एक से अधिक बाइट की जरूरत है। दरअसल इसे 9 बिट्स की जरूरत है।


5
2017-08-19 13:13





आप इसका प्रतिनिधित्व कर सकते हैं बिट शिफ्ट ऑपरेशन (बाएं या दाएं के आधार पर endianness द्विआधारी प्रतिनिधित्व का)। उदाहरण के लिए यह एक लाइनर एक बड़े एंडियन प्रतिनिधित्व के लिए काम करता है (सबसे महत्वपूर्ण बाइट पहले):

1 << 8

एक हस्ताक्षरित बाइट केवल 256 मान रख सकते हैं जिसमें [0 - 255] की सीमा शामिल है। मूल्य 256 के लिए आपको एक ऐसे डेटा प्रकार का उपयोग करना होगा जो एक बड़ा मान धारण कर सके, उदाहरण के लिए एक पूर्णांक।


0
2017-08-19 14:51