"हाय, अमीगो!"
"हाय, बिलाबो!"
"मैं आपको अलग-अलग नंबरिंग सिस्टम के बारे में कुछ बताना चाहता हूं।"
"आप पहले ही सुन चुके हैं कि लोग दशमलव प्रणाली का उपयोग करते हैं। यहाँ इस प्रणाली के मुख्य तथ्य हैं:
1) संख्याओं को लिखने के लिए 10 अंकों का प्रयोग किया जाता है: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9।
2) संख्या 543 का अर्थ है 5 सैकड़ा + 4 दहाई + 3 इकाई।
"यह 5*100 + 4*10 + 3*1 लिखने के बराबर है, जिसे 5*10 2 + 4*10 1 + 3*10 0 लिखा जा सकता है ।
ध्यान दें कि हजारों, सैकड़ों, दहाई और एक संख्या 10 की शक्तियां हैं।
1) एक शून्य की घात 10 है।
2) दस पहली शक्ति के लिए 10 है।
3) एक सौ दूसरी शक्ति के लिए 10 है।
4) तीसरी शक्ति में एक हजार 10 है, आदि।
"हाँ। समझ गया।"
"लेकिन अब कल्पना कीजिए कि हमारे पास केवल 8 अंक हैं। फिर हमारे पास अष्टक प्रणाली है। यहां इसके मुख्य तथ्य हैं:"
1) संख्याएँ लिखने के लिए 8 अंकों का उपयोग किया जाता है: 0, 1, 2, 3, 4, 5, 6, 7।
2) संख्या 543 8 का अर्थ 5*8 2 +4*8 1 +3*8 0 है । दूसरे शब्दों में, यह 5*64 + 4*8 + 3*1 = 320+32+3 = 320+32+3=355 10 है
मैंने 8 और 10 को सबस्क्रिप्ट के रूप में लिखा, यह इंगित करने के लिए कि संख्या का प्रतिनिधित्व करने के लिए कितने अंकों का उपयोग किया जाता है।
"मुझे लगता है कि मैं समझ गया। मुझे लगता है कि मैं किसी संख्या को अष्टक प्रणाली से दशमलव में बदल सकता हूं। लेकिन मैं शायद दूसरे तरीके से नहीं जा सकता।"
"यह इतना मुश्किल नहीं है। कल्पना कीजिए कि आपको रेत के ढेर को स्थानांतरित करने के लिए कई ट्रकों का उपयोग करने की आवश्यकता है। आपके पास डंप ट्रक, साधारण ट्रक और बहुत छोटे ट्रक हैं। लेकिन ट्रक नहीं जा सकते यदि वे भरे हुए नहीं हैं।"
"आपको इसे कैसे करना होगा?"
"पहले, मैं डंप ट्रकों को भरता था, क्योंकि वे सबसे बड़े होते हैं। फिर, जब मैंने देखा कि ट्रक को भरने के लिए पर्याप्त रेत नहीं है, तो मैं छोटे वाहनों पर स्विच करूंगा। और फिर छोटे वाले भी।"
"यह वास्तव में यहाँ बहुत समान है। आइए संख्या 355 10 को वापस ऑक्टल में बदलने का प्रयास करें।"
"सबसे पहले, हम इसे 64 (8 2 ) से विभाजित करते हैं और 35 शेष के साथ 5 प्राप्त करते हैं। इसका मतलब है कि हमारी संख्या का पहला अंक 5 है। फिर हम शेषफल को 8 (8 1 ) से विभाजित करते हैं और शेषफल के साथ 4 प्राप्त करते हैं। 3 का। इस प्रकार, हमें संख्या 543 8 प्राप्त होती है ।
"वैसे, आप दूसरी दिशा में भी जा सकते हैं। आखिरकार, 543 8 == 5*64+4*8+3 == ((5)*8+4)*8+3। हमारा ऑक्टल "टेन्स" " और "सौ" को 8 से विभाजित किया जाना चाहिए। इसलिए, 8 से शेष भाग हमारे अष्टक अंक होंगे।
"पहले, 355 को 8 से विभाजित करते हैं। हमें 44 प्राप्त होता है और शेष 3 आता है। अर्थात, 355=44*8+3। और 44 को 5*8+4 के रूप में दर्शाया जा सकता है। इस प्रकार, 355= (5*8+ 4)*8+3; यहां हमारे अंक हैं: 5, 4, 3. हम जो संख्या ढूंढ रहे हैं वह 543 8 है ।"
"मुझे लगता है कि मैं समझ गया, लेकिन मुझे सब कुछ पूरी तरह से समझने के लिए थोड़ा अभ्यास करने की आवश्यकता होगी।"
"प्रोग्रामिंग में अक्सर विभिन्न आधारों के साथ संख्याओं का उपयोग करना शामिल होता है (यानी संख्या प्रणाली में उपयोग किए जाने वाले अंकों की संख्या)। सबसे लोकप्रिय 2, 8, 10, 16 और 64 हैं।"
"लेकिन यह क्यों जरूरी है? हमें 2, 8, 16, या 64 अंकों के प्रतिनिधित्व वाली संख्याओं की आवश्यकता क्यों है?"
"यह इस बारे में है कि प्रोसेसर आंतरिक रूप से कैसे काम करता है। बहुत सरलता से, यदि तार के माध्यम से करंट प्रवाहित हो रहा है, तो हम कहते हैं कि इसका मान 1 है; यदि कोई करंट नहीं है, तो इसका मान 0 है। सभी नंबर मेमोरी सेल में संग्रहीत होते हैं। ये कोशिकाओं का एक बहुत ही बुनियादी डिजाइन होता है। और वे केवल 0 या 1 को ही स्टोर कर सकते हैं।
"लेकिन इस तरह के सरलीकरण (केवल 0 या 1) ने प्रोसेसर और मेमोरी के अंदर के तत्वों को बहुत छोटा बनाना संभव बना दिया। आधुनिक प्रोसेसर और मेमोरी मॉड्यूल में अरबों अलग-अलग तत्व शामिल होते हैं। और उनका क्षेत्रफल अक्सर एक वर्ग सेंटीमीटर से अधिक नहीं होता है।"
"वाह। अब मुझे पता है।"
"अब हम बाइनरी नंबरों की ओर मुड़ते हैं। यहां हमारे पास ऑक्टल के समान ही है, केवल आसान है।"
1) संख्याओं को लिखने के लिए 2 अंकों का प्रयोग किया जाता है: 0, 1.
2) संख्या 101 2 का अर्थ है 1*2 2 + 0*2 1 + 1*2 0 । दूसरे शब्दों में, यह 1*4+0*2+1*1 =4+1=51 10 है
"हाँ। मुझे याद है। एक सेल, जिसका मान 0 या 1 हो सकता है, बिट कहलाता है। लेकिन यह बहुत अधिक जानकारी संग्रहीत नहीं कर सकता है, इसलिए उन्हें 8 के समूहों में संयोजित किया जाता है। इन समूहों को बाइट कहा जाता है। "
"बिल्कुल सटीक। एक बाइट आठ बिट्स का एक समूह है। यह निम्नलिखित मानों को संग्रहीत कर सकता है: 00000000, 00000001, ... 11111111। ये मान दशमलव संख्या 0,1, ... 255 के अनुरूप हैं। जो हमें कुल देता है। 256 मान।"
जावा में सबसे बड़ा पूर्णांक क्या है? या यों कहें कि इसका प्रकार क्या है?
"एक लंबा। एक लंबे में 8 बाइट्स होते हैं। दूसरे शब्दों में, 64 बिट्स। यह -2 63 से 2 63 -1 तक के मूल्यों को संग्रहीत कर सकता है।
"हां। मैं इस बारे में बात नहीं करूंगा कि संख्याओं को दशमलव से द्विआधारी या इसके विपरीत कैसे परिवर्तित किया जाए। अन्यथा, पाठ बहुत लंबा हो जाएगा।"
"इसके बजाय, आइए हेक्साडेसिमल सिस्टम के बारे में थोड़ी और बात करें।"
"हाँ, यह बहुत दिलचस्प है। बाइनरी और ऑक्टल सिस्टम के लिए, हमने क्रमशः दो और आठ से शुरू होने वाले अंकों से छुटकारा पा लिया है। लेकिन हम यहाँ क्या करते हैं? नए अंक जोड़ें?"
"बिल्कुल सही! इसे देखें:"
1) संख्याओं को लिखने के लिए 16 अंकों का उपयोग किया जाता है: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F।
2) संख्या 543 16 का अर्थ है 5*16 2 + 4*16 1 + 3*16 0 । दूसरे शब्दों में, यह 5*256+4*16+3*1 = 1280+64+3 = 1347 10 है
"तो, हमने अभी अक्षरों को अंक के रूप में जोड़ा है? O_o"
"हाँ। और इसमें बड़ी बात क्या है? जब अक्षर पूरी तरह से काम करते हैं तो नए नंबरों का आविष्कार क्यों करें? इसे देखें:"
हेक्साडेसिमल अंक | दशमलव मान |
---|---|
0 | 0 |
1 | 1 |
8 | 8 |
9 | 9 |
ए | 10 |
बी | 11 |
सी | 12 |
डी | 13 |
इ | 14 |
एफ | 15 |
"मैं दशमलव से हेक्साडेसिमल में कनवर्ट करने के बारे में भी बात नहीं कर रहा हूं। लेकिन यहां एक दिलचस्प तथ्य है। एक हेक्साडेसिमल अंक 0 से 15 के मान के साथ बिल्कुल 4 बिट्स द्वारा दर्शाया जाता है। इसलिए, एक बाइट को आठ बाइनरी अंकों के साथ लिखा जा सकता है। (0 या 1) या दो हेक्साडेसिमल अंक।"
"यहाँ एक उदाहरण है:"
दशमलव संख्या | बाइनरी संख्या | हेक्साडेसिमल संख्या |
---|---|---|
0 | 0000 0000 | 00 |
1 | 0000 0001 | 01 |
15 | 0000 1111 | 0f |
16 | 0001 0000 | 10 |
31 | 0001 1111 | 1f |
32 | 0010 0000 | 20 |
128 | 1000 0000 | 80 |
129 | 1000 0001 | 81 |
255 | 1111 1111 | सीमांत बल |
"हेक्साडेसिमल प्रतिनिधित्व आसानी से बाइनरी (और इसके विपरीत) में परिवर्तित हो जाता है। यही कारण है कि प्रोग्रामिंग में बाइनरी (0s और 1s का उपयोग करके) में एक संख्या का आंतरिक बाइट प्रतिनिधित्व शायद ही कभी दिया जाता है। यह बहुत लंबा और समझने में मुश्किल होगा। हेक्साडेसिमल नोटेशन अधिक पठनीय और कॉम्पैक्ट है।"
"मैं सहमत हूँ। मुझे भी यह पसंद आया।"
"वैसे, जावा आपको सीधे कोड में विभिन्न नंबरिंग सिस्टम में नंबर लिखने देता है:"
आधार | विशिष्ठ सुविधा | उदाहरण | अमान्य संख्याएँ |
---|---|---|---|
2 | संख्या की शुरुआत में 0b | 0बी 00001111 | 0बी 11111 2 1 |
8 | संख्या की शुरुआत में 0 | 0 1234343 | 0 12 8 |
10 | कोई नहीं | 95459 | 909 ए |
16 | संख्या की शुरुआत में 0x | 0x 10ff | 0x 1c घ |
"उत्कृष्ट पाठ। धन्यवाद, बिलाबो।"