বাইনারি সংখ্যার জন্য স্বরলিপি যেমন 1000100B - 1

"হাই, অ্যামিগো!"

"হাই, বিলাবো!"

"আমি আপনাকে বিভিন্ন নম্বর সিস্টেম সম্পর্কে একটু বলতে চাই।"

"আপনি ইতিমধ্যে শুনেছেন যে লোকেরা দশমিক সিস্টেম ব্যবহার করে। এখানে এই সিস্টেমের প্রধান তথ্য রয়েছে:

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 দিয়ে ভাগ করি। বাকি 3 দিয়ে আমরা 44 পাব। অর্থাৎ, 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 1চ
32 0010 0000 20
128 1000 0000 80
129 1000 0001 81
255 1111 1111 ff

"হেক্সাডেসিমেল উপস্থাপনা সহজেই বাইনারিতে রূপান্তরিত হয় (এবং তদ্বিপরীত)। তাই প্রোগ্রামিং-এ একটি সংখ্যার অভ্যন্তরীণ বাইট উপস্থাপনা খুব কমই বাইনারি (0s এবং 1s ব্যবহার করে) দেওয়া হয়। এটি খুব দীর্ঘ এবং বোঝা কঠিন হবে। হেক্সাডেসিমেল নোটেশন অনেক বেশি পঠনযোগ্য এবং কমপ্যাক্ট।"

"আমি রাজি। এমনকি আমি এটা পছন্দ করেছি।"

"প্রসঙ্গক্রমে, জাভা আপনাকে কোডে সরাসরি বিভিন্ন নম্বর সিস্টেমে নম্বর লিখতে দেয়:"

বেস পার্থক্য বৈশিষ্ট্য উদাহরণ অবৈধ সংখ্যা
2  সংখ্যার শুরুতে 0b 0b 00001111 0b 11111 2 1
8  সংখ্যার শুরুতে 0 0 1234343 0 12 8
10 কোনোটিই নয় 95459 909
16  সংখ্যার শুরুতে 0x 0x 10ff 0x 1c gh

"চমৎকার পাঠ। ধন্যবাদ, বিলাবো।"