1. ऑक्टल एन्कोडिंग

एनकोडिंग की बात करें... जैसा कि आप जानते हैं, रोजमर्रा की जिंदगी में हम दशमलव संकेतन का उपयोग करते हैं: हमारी सभी संख्याएं 10 प्रतीकों का उपयोग करके दर्शाई जाती हैं: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 10 हैं अंक, इसलिए प्रणाली को दशमलव कहा जाता है।

लेकिन प्रोग्रामर बड़े समय के आविष्कारक होते हैं। वे तुरंत एनकोडिंग के साथ आए जो विभिन्न प्रकार के प्रतीकों का उपयोग करते हैं। उदाहरण के लिए, 16, 8 और 2.

8 प्रतीकों का उपयोग करने वाला वैकल्पिक एन्कोडिंग सबसे आसान है: बस 8 और 9 को छोड़ दें और आपको एक ऑक्टल एन्कोडिंग (ऑक्टल अंक प्रणाली ) मिलती है।

और, हाँ, आप संख्यात्मक शाब्दिक निर्दिष्ट करने के लिए अष्टक प्रणाली का उपयोग कर सकते हैं। यदि, निश्चित रूप से, आपको वास्तव में चाहिए। यह सुनने में जितना आसान लगता है, उससे कहीं ज्यादा आसान है। आपको बस नंबर के पहले नंबर 0 लिखना है।

दूसरे शब्दों में, जावा 0 से शुरू होने वाले किसी भी पूर्णांक शाब्दिक को अष्टक मान के रूप में मानता है।

उदाहरण:

कोड टिप्पणियाँ
int x = 015; 
x 13: 1*8+5 है
int x = 025; 
x 21: 2*8+5 है
int x = 0123; 
एक्स 83 है: 1*64+2*8+3 == 1*8 2 +2*8 1 +3*8 0
int x = 078;
यह संकलित नहीं होगा: 8 ऑक्टल एन्कोडिंग में प्रयुक्त प्रतीकों में से एक नहीं है।

यह संभावना नहीं है कि आपको अपने कोड में ऑक्टल नंबर लिखने की आवश्यकता होगी, लेकिन आपको पता होना चाहिए कि वे क्या हैं। आखिरकार, आपको दूसरों द्वारा लिखे गए कोड को पढ़ना होगा। और जैसा ऊपर बताया गया है, प्रोग्रामर बड़े आविष्कारक हैं।

ठीक है, याद रखें कि आप हर संख्या के सामने केवल 0 नहीं लिख सकते।



2. बाइनरी एन्कोडिंग

बाइनरी एन्कोडिंग और भी दिलचस्प है। यदि ऑक्टल में केवल 0-7 अंक होते हैं, तो बाइनरी में केवल 0 और 1 होते हैं। यह एन्कोडिंग क्यों आवश्यक है?

यह सब कुछ कंप्यूटर की आंतरिक संरचना से संबंधित है। कंप्यूटर में सब कुछ बिजली से चलता है, और जैसा कि होता है, बिजली का उपयोग करके किसी चीज को स्टोर और ट्रांसमिट करने का सबसे कुशल तरीका दो राज्यों का उपयोग करना है: या तो तार में बिजली नहीं है (शून्य) और बिजली है (एक)।

यह बाइनरी अंक प्रणाली की लोकप्रियता का मूल है।

सिद्धांत रूप में, यह जावा में बहुत बार उपयोग नहीं किया जाता है: जावा को एक उच्च-स्तरीय भाषा माना जाता है, जो उस हार्डवेयर से पूरी तरह से अमूर्त है जिस पर यह चलता है। दरअसल, क्या आप वास्तव में परवाह करते हैं कि कंप्यूटर के अंदर डेटा को स्टोर और प्रोसेस करने के लिए किस प्रारूप का उपयोग किया जाता है?

लेकिन पिछले दशकों में, प्रोग्रामर बाइनरी एन्कोडिंग (और इसके आधार पर अन्य एन्कोडिंग) को पसंद करने लगे हैं। नतीजतन, जावा में ऐसे ऑपरेटर हैं जो इनपुट के रूप में बाइनरी नंबर लेते हैं। और फ़्लोटिंग-पॉइंट नंबरों की सटीकता उनके बाइनरी प्रतिनिधित्व पर निर्भर करती है।

मूल रूप से, आपके लिए इस एन्कोडिंग के बारे में जानने से बेहतर है कि आप न जानें।

और जैसा कि ऑक्टल एन्कोडिंग के मामले में था, जावा के पास बाइनरी सिस्टम का उपयोग करके अक्षर को एन्कोड करने का एक तरीका है। अर्थात्, शाब्दिक में केवल 0s और 1s शामिल हैं। जावा कंपाइलर को यह समझने के लिए कि कोड में शून्य और एक से मिलकर दशमलव संख्या के बजाय बाइनरी में एक संख्यात्मक शाब्दिक एन्कोडेड होता है, सभी बाइनरी शाब्दिकों को उपसर्ग 0b ('बी' शब्द बाइनरी से आता है) का उपयोग करके पहचाना जाता है। .

उदाहरण:

कोड टिप्पणियाँ
int x = 0b100; 
х 4: 1*4+0*2+0 है
int x = 0b1111; 
х 15: 1*8+1*4+1*2+1 है
int x = 0b1111000111; 
х 967 है: 1*2 9 +1*2 8 +1*2 7 +1*2 6 +0*2 5 +0*2 4 +0*2 3 +1*2 2 +1*2+1;
int x = 0b12000;
यह संकलित नहीं होगा: 2 बाइनरी एन्कोडिंग में प्रयुक्त प्रतीकों में से एक नहीं है।


3. हेक्साडेसिमल एन्कोडिंग

ऑक्टल और बाइनरी एनकोडिंग के अलावा, शाब्दिक को हेक्साडेसिमल में भी लिखा जा सकता है। यह एक बहुत ही लोकप्रिय कूटलेखन है।

ऐसा इसलिए है क्योंकि हालांकि बाइनरी नोटेशन संख्याओं को वास्तव में संग्रहीत करने के जितना संभव हो उतना करीब है, मनुष्यों के लिए ऐसी संख्याओं के साथ प्रभावी ढंग से काम करना बहुत मुश्किल है: बाइनरी में, नंबर एक मिलियन में 20 अंक होते हैं, 7 नहीं।

इसलिए प्रोग्रामर हेक्साडेसिमल प्रणाली के साथ आए। आखिरकार, 16 2 को चौथी शक्ति तक बढ़ा दिया गया है, इसलिए ठीक 4 बिट एक हेक्साडेसिमल अंक के अनुरूप हैं। मोटे तौर पर, प्रत्येक 4 बिट को अब एक हेक्साडेसिमल अंक के रूप में लिखा जा सकता है।

हेक्साडेसिमल एन्कोडिंग का भी अपना अनूठा उपसर्ग है: 0x । उदाहरण:

दशमलव संख्या बाइनरी नोटेशन हेक्साडेसिमल नोटेशन
17 0बी 0001 0001 0x 1 1
4 1 0बी 0010 1 00 1 0x 2 9
85 0बी 0101 0101 0x 5 5
256 0बी 1 0000 0000 0x 1 0 0

ठीक है, आप कहते हैं, यह काफी स्पष्ट है कि हमें ऑक्टल सिस्टम कैसे मिला: हमने केवल संख्या 8 और 9 को बाहर कर दिया, लेकिन हेक्साडेसिमल सिस्टम के लिए हमें 6 अतिरिक्त प्रतीक कहां से मिले? मैं उन्हें देखना चाहूंगा!

यह सब सीधा है। अंग्रेजी वर्णमाला के पहले 6 अक्षरों को 6 लापता प्रतीकों के रूप में लिया गया: A (10), B (11), C (12), D (13), E (14), F (15)।

उदाहरण:

हेक्साडेसिमल नोटेशन बाइनरी नोटेशन दशमलव संख्या
0x 1 0बी 0000 0001 1
0x 9 0बी 0000 1001 9
0x 0बी 0000 1010 10
0x बी 0बी 0000 1011 11
0x सी 0बी 0000 1100 12
0x डी 0बी 0000 1101 13
0x 0बी 0000 1110 14
0x एफ 0बी 0000 1111 15
0x 1 एफ 0बी 0001 1111 31
0x एफ 0बी 1010 1111 175
0x एफ एफ 0बी 1111 1111 255
0x एफ एफ एफ 0बी 1111 1111 1111 4095


4. किसी संख्या को हेक्साडेसिमल से कैसे परिवर्तित करें

किसी संख्या को हेक्साडेसिमल से दशमलव में बदलना बहुत आसान है। मान लें कि आपके पास संख्या 0 x A F C F है । वह दशमलव में कितना है?

सबसे पहले, हमारे पास एक स्थितीय संख्या प्रणाली है, जिसका अर्थ है कि कुल संख्या में प्रत्येक अंक का योगदान 16 के कारक से बढ़ जाता है क्योंकि हम दाएं से बाएं चलते हैं:

* 16 3 + एफ * 16 2 + सी * 16 1 + एफ

प्रतीक A संख्या 10 से मेल खाता है, अक्षर C संख्या 12 से मेल खाता है, और अक्षर F पंद्रह का प्रतिनिधित्व करता है। हम पाते हैं:

10 * 16 3 + 15 * 16 2 + 12 * 16 1 + 15

अंकों के संगत विभिन्न घातों में 16 को ऊपर उठाने पर, हमें यह प्राप्त होता है:

10 * 4096 + 15 * 256 + 12 * 16 + 15

हम सब कुछ जोड़ते हैं और प्राप्त करते हैं:

45007

आप जानते हैं कि यह संख्या स्मृति में कैसे संग्रहीत होती है:

0x एफ सी एफ

लेकिन अब इसे बाइनरी में बदलते हैं। बाइनरी में यह होगा:

0बी 1010 1111 1100 1111

चार बिट्स का प्रत्येक सेट ठीक एक हेक्साडेसिमल वर्ण से मेल खाता है। यह बहुत सुविधाजनक है। बिना किसी गुणन या घातांक के।"