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;
x হল 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 উপসর্গ ব্যবহার করে চিহ্নিত করা হয় ('b' শব্দটি বাইনারি থেকে এসেছে) .

উদাহরণ:

কোড মন্তব্য
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 বিট এক হেক্সাডেসিমেল সংখ্যার সাথে মিলে যায়। মোটামুটিভাবে বলতে গেলে, প্রতি 4 বিট এখন একটি একক হেক্সাডেসিমেল সংখ্যা হিসাবে লেখা যেতে পারে।

হেক্সাডেসিমেল এনকোডিংয়ের নিজস্ব অনন্য উপসর্গ রয়েছে: 0x । উদাহরণ:

দশমিক সংখ্যা বাইনারি স্বরলিপি হেক্সাডেসিমেল নোটেশন
17 0b 0001 0001 0x 1 1
4 1 0b 0010 1 00 1 0x 2 9
85 0b 0101 0101 0x 5 5
256 0b 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 0b 0000 0001 1
0x 9 0b 0000 1001 9
0x A 0b 0000 1010 10
0x বি 0b 0000 1011 11
0x সি 0b 0000 1100 12
0x ডি 0b 0000 1101 13
0x 0b 0000 1110 14
0x F 0b 0000 1111 15
0x 1 F 0বি 0001 1111 31
0x A F 0b 1010 1111 175
0x F F 0b 1111 1111 255
0x F F F 0 বি 1111 1111 1111 4095


4. কিভাবে হেক্সাডেসিমেল থেকে একটি সংখ্যা রূপান্তর করতে হয়

একটি সংখ্যাকে হেক্সাডেসিমেল থেকে দশমিকে রূপান্তর করা খুবই সহজ। ধরা যাক আপনার সংখ্যা 0 x A F C F। দশমিকে কত?

প্রথমত, আমাদের একটি অবস্থানগত সংখ্যা পদ্ধতি রয়েছে, যার অর্থ সামগ্রিক সংখ্যায় প্রতিটি অঙ্কের অবদান 16 এর একটি ফ্যাক্টর দ্বারা বৃদ্ধি পায় যখন আমরা ডান থেকে বামে যাই:

A * 16 3 + F * 16 2 + C * 16 1 + F

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 A F C F

কিন্তু এখন এর বাইনারি রূপান্তর করা যাক. বাইনারিতে এটি হবে:

0বি 1010 1111 1100 1111

চারটি বিটের প্রতিটি সেট ঠিক একটি হেক্সাডেসিমেল অক্ষরের সাথে মিলে যায়। যে সুপার সুবিধাজনক. কোনো গুণ বা সূচক ছাড়াই।"