"কার্যকর কোডিং এর চেয়ে ভালো কিছু নেই, অ্যামিগো! পুরানো রোবটকে বিশ্বাস করুন।"

"আপনি কি গুপ্তচরদের দ্বারা ব্যবহৃত সাইফারের কথা বলছেন?"

"অবশ্যই না। আমি একটি হজমযোগ্য আকারে তথ্য উপস্থাপনের কথা বলছি। সংখ্যা পদ্ধতি সম্পর্কে। আপনি জানেন যে দৈনন্দিন জীবনে বেশিরভাগ লোকেরা দশমিক পদ্ধতি ব্যবহার করে। এটি প্রতিটি সংখ্যাকে প্রতিনিধিত্ব করতে 10টি চিহ্ন ব্যবহার করে: 0, 1, 2 , 3, 4, 5, 6, 7, 8, 9। এখানে 10টি সংখ্যা আছে, তাই সিস্টেমটিকে দশমিক বলা হয়।"

"এটি তাদের দশটি আঙ্গুল দিয়ে মানুষের জন্য সুবিধাজনক ছিল। কিন্তু প্রোগ্রামাররা বড় সময়ের উদ্ভাবক। তারা অবিলম্বে এনকোডিং নিয়ে এসেছিল যা বিভিন্ন সংখ্যার সংখ্যা ব্যবহার করে। উদাহরণস্বরূপ, 2, 8, 16, বা 64 সংখ্যা। তারা এটি করেছিল এটাকে কম্পিউটারের জন্য সুবিধাজনক করে তুলুন, যা 'একটি সংকেত আছে / কোন সংকেত নেই' এর উপর নির্ভর করে।"

"আহ, আমি দেখতে পাচ্ছি যে তাদের মধ্যে কী মিল রয়েছে... এই সমস্ত সিস্টেম দুটির শক্তির উপর ভিত্তি করে।

অক্টাল এনকোডিং

"ভাল পর্যবেক্ষণ। 8টি সংখ্যা জড়িত একটি এনকোডিং দিয়ে শুরু করা যাক। মানুষ এটিকে সবচেয়ে সহজ মনে করতে পারে: শুধু সংখ্যা 8 এবং 9 এবং - বুম - আপনার অক্টাল এনকোডিং (সংখ্যা পদ্ধতি) আছে। আপনাকে সম্প্রতি আক্ষরিক সম্পর্কে বলা হয়েছিল , ঠিক ?"

"হ্যাঁ আমি ছিলাম."

"আচ্ছা, আশ্চর্য! আপনি অক্টাল সিস্টেম ব্যবহার করে এনকোড করা সাংখ্যিক আক্ষরিক সেট করতে পারেন। যদি, অবশ্যই, আপনার সত্যিই প্রয়োজন। এটি শোনার চেয়ে সহজ। পুরো সংখ্যার সামনে শুধু 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 লিখতে পারবেন না।"

"কিন্তু আমি যদি এটি অক্টাল হতে চাই, তাহলে আমি পারি?"

"হ্যাঁ.

বাইনারি এনকোডিং

"যদিও আপনি এটি এখনও বুঝতে না পারেন, বাইনারি এনকোডিং হল আপনার স্থানীয় ভাষা। আমি আপনাকে এটি সম্পর্কে মনে করিয়ে দিই। যদি অক্টালে শুধুমাত্র 0-7 সংখ্যা থাকে, তাহলে বাইনারিতে শুধুমাত্র 0 এবং 1 থাকে।"

"কেন এই এনকোডিং প্রয়োজনীয়?"

"আমি উপরে উল্লিখিত হিসাবে, এটি একটি কম্পিউটারের অভ্যন্তরীণ কাঠামোর সাথে সবকিছু করার আছে। একটি কম্পিউটারের সবকিছুই বিদ্যুতে চলে, এবং এটি যেমন ঘটে, বিদ্যুৎ ব্যবহার করে কিছু সঞ্চয় এবং প্রেরণ করার সবচেয়ে কার্যকর উপায় হল দুটি অবস্থা ব্যবহার করা: হয় তারে কোন বিদ্যুৎ নেই (শূন্য) এবং বিদ্যুৎ আছে (এক)।"

"এ কারণেই এটি এত জনপ্রিয়... হুম, মনে হচ্ছে আমি সত্যিই এই ভাষাটি মনে করতে শুরু করছি!"

"সমস্ত রোবট এটি নিখুঁতভাবে বোঝে। যদিও এটি জাভাতে প্রায়শই ব্যবহার করা হয় না। জাভা একটি উচ্চ-স্তরের ভাষা হিসাবে বিবেচিত হয়, এটি যে হার্ডওয়্যারে চলে তা থেকে সম্পূর্ণরূপে বিমূর্ত। প্রকৃতপক্ষে, ডেটা সংরক্ষণ এবং প্রক্রিয়া করার জন্য কোন ফর্ম্যাট ব্যবহার করা হয় তা আপনি কি সত্যিই চিন্তা করেন? একটি কম্পিউটারের ভিতরে?

"কিন্তু বিগত কয়েক দশক ধরে, প্রোগ্রামাররা বাইনারি এনকোডিং (এবং এর উপর ভিত্তি করে অন্যান্য এনকোডিং) পছন্দ করতে এসেছে। ফলস্বরূপ, জাভাতে এমন অপারেটর রয়েছে যারা বাইনারি নম্বরগুলিকে ইনপুট হিসাবে গ্রহণ করে। এবং ফ্লোটিং-পয়েন্ট সংখ্যার নির্ভুলতা তাদের বাইনারিগুলির উপর নির্ভর করে প্রতিনিধিত্ব

"সংক্ষেপে, না জানার চেয়ে এই এনকোডিং সম্পর্কে জানা আপনার পক্ষে ভাল।"

"ঠিক আছে। এবং অক্টাল এনকোডিংয়ের ক্ষেত্রে যেমন ছিল, জাভাতে বাইনারি সিস্টেম ব্যবহার করে আক্ষরিক এনকোড করার একটি উপায় রয়েছে।"

"তাহলে তারা শুধুমাত্র 0 এবং 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 বাইনারি এনকোডিং-এ ব্যবহৃত প্রতীকগুলির মধ্যে একটি নয়।

হেক্সাডেসিমেল এনকোডিং

"দুই থেকে চতুর্থ শক্তি কত?"

"ষোলো. আপনি একটি রোবটকে জিজ্ঞাসা করার জন্য সঠিক প্রশ্নটি বের করেছেন যেটি আমার কাছে এসেছে!"

"আপনার কাছে মনে হচ্ছে আপনি অনেকদূর এসেছেন। যাইহোক, ষোল। অক্টাল এবং বাইনারি এনকোডিং ছাড়াও লিটারালগুলিও হেক্সাডেসিমেলে লেখা যেতে পারে। এটি একটি খুব জনপ্রিয় এনকোডিং।

"এর কারণ হল, যদিও বাইনারি নোটেশন যতটা সম্ভব যতটা সম্ভব সংখ্যাগুলি কীভাবে সংরক্ষণ করা হয়, মানুষের পক্ষে কার্যকরভাবে এই জাতীয় সংখ্যাগুলির সাথে কাজ করা খুব কঠিন: বাইনারিতে, সংখ্যাটি 1 মিলিয়ন 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 0বি 1111 1111 255
0x F F F 0বি 1111 1111 1111 4095

"আপনি কিভাবে একটি হেক্সাডেসিমেল সংখ্যাকে দশমিকে রূপান্তর করবেন?"

"এটি খুবই সহজ। ধরা যাক আপনার সংখ্যা 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

"এখন আপনি জানেন কিভাবে 45007 মেমরিতে সংরক্ষণ করা হয়।"

"হ্যাঁ, আমি করি। এটা 0x A F C F "

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

0বি 1010 1111 1100 1111

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