সরাসরি পর্বে যান
পর্ব ১৬ · ৫৫-এর মধ্যে · মডিউল ৩

সংখ্যা পদ্ধতি আর রূপান্তর — বাইনারি, অক্টাল আর হেক্সাডেসিমাল

Number Systems & Conversion — Binary, Octal and Hexadecimal

Taught in Bangla, this lesson explains number systems as symbols plus positional weights and why computers use base 2. It covers decimal, binary, octal and hexadecimal digits, converting decimal by repeated division and fractions by repeated multiplication, expanding any base to decimal, grouping into 3 and 4 bits for octal and hex, hex in colours, MAC addresses and Unicode, counting values in n bits and common exam mistakes.

এই পর্বে যা শিখবেন

  • সংখ্যা পদ্ধতি কী, ভিত্তি আর স্থানীয় মান কী — রোমান সংখ্যা কেন হিসাবের জন্য অচল
  • দশমিক, বাইনারি, অক্টাল আর হেক্সাডেসিমাল — কোন পদ্ধতিতে কোন অঙ্ক চলে
  • পরীক্ষার খাতার নিয়মে সব রূপান্তর: ভাগ পদ্ধতি, গুণ পদ্ধতি, স্থানীয় মানে বিস্তার, দলে ভাগ
  • হেক্স কেন সবখানে — HTML-এর রং, MAC address, মেমরির ঠিকানা আর Unicode
  • n bit-এ কতগুলো মান ধরে, আর পরীক্ষায় যে ভুলগুলো সবচেয়ে বেশি হয়

১ · সংখ্যা পদ্ধতি কী — আঙুল, সুইচ আর চিহ্ন

একটি সহজ প্রশ্ন দিয়ে শুরু করি: “২০২৬” লিখলে আমরা কেন বুঝি এটি দুই হাজার ছাব্বিশ, দুই-শূন্য-দুই-ছয় নয়? কারণ আমরা মনে মনে একটি নিয়ম মানি — ডান দিকের অঙ্কটি এককের ঘর, তার বাঁয়েরটি দশকের, তারপর শতকের, তারপর হাজারের। একই অঙ্ক “২” প্রথমবার মানে দুই হাজার, তৃতীয় ঘরে মানে বিশ। অঙ্কের মান নির্ভর করছে সে কোথায় বসেছে তার ওপর।

এই নিয়মের পুরো ব্যবস্থাটিই সংখ্যা পদ্ধতি (number system): কিছু নির্দিষ্ট চিহ্ন (অঙ্ক), আর সেগুলো পাশাপাশি বসিয়ে যেকোনো পরিমাণ লেখার নিয়ম। পৃথিবীতে মানুষ নানা রকম সংখ্যা পদ্ধতি বানিয়েছে। মোটা দাগে সেগুলো দুই রকম:

অবস্থাননির্ভর নয় (non-positional)

চিহ্নের মান সবসময় এক, যেখানেই বসুক। যেমন দাগ কেটে গোনা (tally) — ক্রিকেট খেলায় রান গুনতে খাতায় IIII আর পাঁচ নম্বরে আড়াআড়ি দাগ। কিংবা রোমান সংখ্যা: I = ১, V = ৫, X = ১০, L = ৫০, C = ১০০, M = ১০০০; MMXXVI = ২০২৬. এগুলো হলো non-positional পদ্ধতি।

Tally, রোমান সংখ্যা

অবস্থাননির্ভর (positional)

একই চিহ্নের মান বদলায় তার ঘর অনুযায়ী, আর একটি “শূন্য” চিহ্ন খালি ঘর বোঝায়। আমাদের দশমিক পদ্ধতি, কম্পিউটারের বাইনারি, অক্টাল, হেক্সাডেসিমাল — সবই positional পদ্ধতি।

দশমিক, বাইনারি, অক্টাল, হেক্স

রোমান সংখ্যায় ঘড়ির ডায়াল বা বইয়ের অধ্যায় লেখা চলে, কিন্তু হিসাব করতে বসলে বিপদ। MMXXVI × XLVII গুণ করার চেষ্টা করুন — খাতায় সাজিয়ে গুণ করার কোনো সহজ নিয়ম নেই, আর রোমানদের কোনো শূন্যও ছিল না। অবস্থাননির্ভর পদ্ধতির আসল জাদু এখানেই: মাত্র কয়েকটি চিহ্ন দিয়ে যত বড় সংখ্যাই হোক লেখা যায়, আর যোগ-বিয়োগ-গুণ-ভাগের একই নিয়ম সব সংখ্যায় খাটে।

আমরা কেন ১০ দিয়ে গুনি, কম্পিউটার কেন ২ দিয়ে

শিশু প্রথম গুনতে শেখে আঙুলে — আর আমাদের আঙুল দশটি। দশটি শেষ হলে নতুন করে শুরু, মনে রাখতে হয় “এক দশ হলো”। দশমিক পদ্ধতির জন্ম সম্ভবত এই সাধারণ কারণেই। তবে দশই একমাত্র উপায় নয়। বাংলাদেশের বাজারেই দেখুন: ডিম কেনা হয় হালি (৪টি) দরে, কলা বা আম অনেক জায়গায় গোনা হয় কুড়ি (২০টি) ধরে, আর এক ডজন মানে ১২টি। প্রতিটিই একটি করে “দল বাঁধার একক” — যা সংখ্যা পদ্ধতির ভিত্তিরই আরেক রূপ।

কম্পিউটারের কাছে আঙুল নেই, আছে কোটি কোটি ছোট সুইচ — transistor. একটি সুইচের অবস্থা মাত্র দুটি: বিদ্যুৎ যাচ্ছে (১) বা যাচ্ছে না (০)। দুটি অবস্থা আলাদা করা খুব সহজ আর নির্ভরযোগ্য — ভোল্টেজ একটু ওঠানামা করলেও “আছে” আর “নেই” গুলিয়ে যায় না। তাই কম্পিউটারের ভেতরের সব হিসাব চলে binary বা দ্বিমিক পদ্ধতিতে, যার অঙ্ক মাত্র দুটি: 0 আর 1. প্রতিটি অঙ্ককে বলে একটি bit — পর্ব ০৪-এ ডেটার একক হিসেবে যাকে চিনেছেন।

সিঁড়ির বাতির উপমা: বাসার সিঁড়ির একটি বাতি হয় জ্বলছে, নয় নিভে আছে — মাঝামাঝি কিছু নেই। পাশাপাশি আটটি বাতি থাকলে জ্বলা-নেভার মোট ২৫৬ রকম সাজ হয়। কম্পিউটার ঠিক এভাবেই আটটি “বাতি” (৮ bit = ১ byte) দিয়ে ০ থেকে ২৫৫ পর্যন্ত যেকোনো সংখ্যা রাখে।

তাহলে অক্টাল আর হেক্সাডেসিমাল কেন? কারণ বাইনারি মানুষের চোখে খুব লম্বা আর একঘেয়ে। দশমিক ১৫৬ বাইনারিতে 10011100 — আটটি অঙ্ক, একটি ভুল করলেই পুরো সংখ্যা বদলে যায়। ৮ আর ১৬ দুটোই ২-এর ঘাত (২³ আর ২⁴), তাই তিনটি বা চারটি bit একসাথে করে একটি অঙ্কে লেখা যায়। 10011100 হেক্সে মাত্র 9C. প্রোগ্রামাররা তাই লম্বা বাইনারির “সংক্ষিপ্ত হাতের লেখা” হিসেবে এগুলো ব্যবহার করেন।

মূল ধারণা

সংখ্যা আর তাকে লেখার চিহ্ন এক জিনিস নয়। “বারোটি ডিম” একটি পরিমাণ; সেটি দশমিকে 12, বাইনারিতে 1100, অক্টালে 14, হেক্সে C. ডিম একটিও বাড়েনি বা কমেনি — শুধু লেখার নিয়ম বদলেছে। রূপান্তর মানে পরিমাণ একই রেখে লেখার নিয়ম বদলানো।

বাংলা অঙ্ক কি আলাদা সংখ্যা পদ্ধতি?

না। ৫ আর 5 একই দশমিক অঙ্ক — শুধু লিপি (script) আলাদা, যেমন “ক” বাংলা লিপিতে আর “k” ইংরেজিতে। বাংলা অঙ্ক ০–৯, আরবি-ইংরেজি অঙ্ক 0–9, দেবনাগরী অঙ্ক — সবই ১০ ভিত্তির দশটি চিহ্ন। লিপি ≠ ভিত্তি। কম্পিউটারের কাছে আবার “৫” চিহ্নটি নিজেই একটি অক্ষর, যার নিজস্ব Unicode নম্বর U+09EB (পর্ব ০৭ আর ১৮)। বাংলা মাধ্যমের পাঠ্যবইয়ে বাইনারি সংখ্যা (১০১১)২ আকারে বাংলা অঙ্কেও লেখা হয় — মান একই। এই পর্বে রূপান্তরের সংখ্যাগুলো ইংরেজি অঙ্কে লিখছি, কারণ হেক্সের A–F অক্ষরের সাথে সেটিই মানানসই আর কম্পিউটারের পর্দাতেও তা-ই দেখবেন।

২ · ভিত্তি, অঙ্ক আর স্থানীয় মান

যেকোনো positional পদ্ধতির সবচেয়ে জরুরি সংখ্যাটি হলো তার ভিত্তি (base বা radix) — পদ্ধতিতে কয়টি আলাদা অঙ্ক আছে। ভিত্তি b হলে অঙ্ক থাকে 0 থেকে b − 1 পর্যন্ত, মোট b-টি। ভিত্তির সমান কোনো একক অঙ্ক নেই — দশমিকে “১০” লিখতে দুটি অঙ্ক লাগে, এক দশ আর শূন্য একক।

পদ্ধতিভিত্তিঅঙ্কগুলোলেখার রীতিকোথায় দেখবেন
দশমিক (Decimal)১০0 1 2 3 4 5 6 7 8 9(156)10দৈনন্দিন জীবন, টাকা-পয়সা
বাইনারি (Binary, দ্বিমিক)২0 1(10011100)2, 0b10011100কম্পিউটারের ভেতরের সবকিছু
অক্টাল (Octal, অষ্টক)৮0 1 2 3 4 5 6 7(234)8, 0o234Linux ফাইল-অনুমতি (chmod 755), পুরোনো কম্পিউটার
হেক্সাডেসিমাল (Hexadecimal, ষোড়শ)১৬0–9, A B C D E F (A = ১০ … F = ১৫)(9C)16, 0x9C, #9Cরং, মেমরির ঠিকানা, MAC address, Unicode

হেক্সের ১৬টি অঙ্ক দরকার, কিন্তু আমাদের অঙ্ক-চিহ্ন মাত্র দশটি। তাই বাকি ছয়টির জন্য ইংরেজির প্রথম ছয়টি অক্ষর ধার করা হয়েছে: A = ১০, B = ১১, C = ১২, D = ১৩, E = ১৪, F = ১৫. ছোট হাতের a–f লিখলেও একই মান।

স্থানীয় মান — প্রতিটি ঘরের ওজন

প্রতিটি ঘরের একটি স্থানীয় মান বা ওজন (weight) আছে, যা ভিত্তির একটি ঘাত। ডান দিকের শেষ পূর্ণসংখ্যার ঘরটি অবস্থান ০ — ওজন b⁰ = ১. তার বাঁয়ে অবস্থান ১ (ওজন b¹), তারপর ২ (b²)… আর দশমিক বিন্দুর ডানে অবস্থান −১, −২… (ওজন b⁻¹, b⁻²…)। বিন্দুটিকে সাধারণভাবে বলে radix point — দশমিকে দশমিক বিন্দু, বাইনারিতে বাইনারি বিন্দু।

অবস্থান৩২১০.−১−২−৩
দশমিক (১০)1000100101.0.10.010.001
বাইনারি (২)8421.0.50.250.125
অক্টাল (৮)5126481.0.1250.015625…
হেক্স (১৬)4096256161.0.0625……

সাধারণ সূত্রটি তাই এক লাইনে লেখা যায় — যেকোনো সংখ্যার মান = প্রতিটি অঙ্ক × তার ঘরের ওজনের যোগফল:

(dn … d1 d0 . d−1 d−2 …)b = dn×bn + … + d1×b1 + d0×b0 + d−1×b−1 + d−2×b−2 + …

সবচেয়ে বাঁয়ের (সবচেয়ে বেশি ওজনের) bit-কে বলে MSB (Most Significant Bit), আর সবচেয়ে ডানের (ওজন ১) bit-কে LSB (Least Significant Bit). LSB দেখেই বলা যায় সংখ্যাটি জোড় না বিজোড়: LSB 0 হলে জোড়, 1 হলে বিজোড়।

লেখার রীতি — কোন ভিত্তির সংখ্যা, বুঝবেন কীভাবে

“101” দেখে বোঝার উপায় নেই এটি একশো এক, নাকি বাইনারির পাঁচ, নাকি অক্টালের পঁয়ষট্টি। তাই ভিত্তি লিখে দিতে হয়:

  • পাঠ্যবই ও পরীক্ষায়: বন্ধনীর পর ছোট করে ভিত্তি — (101)2, (101)8, (101)10, (101)16. পরীক্ষার খাতায় প্রতিটি উত্তরে ভিত্তি লিখতে ভুলবেন না।
  • প্রোগ্রামিং ভাষায় (C, Python, JavaScript): 0b101 = বাইনারি, 0x101 = হেক্স, 0o101 = অক্টাল (Python, JavaScript). C-তে সামনে শুধু 0 দিলেই অক্টাল — 010 মানে আট, দশ নয়! এটি নতুন C প্রোগ্রামারদের একটি পরিচিত ফাঁদ।
  • ওয়েবে রং: #FF0000 — হ্যাশ চিহ্নের পর ছয়টি হেক্স অঙ্ক (পর্ব ২৮)।
  • কখনো শেষে অক্ষর: কিছু বইয়ে 9CH (H = hex), 234Q বা 101B — দেখলে চিনে রাখুন।

০ থেকে ১৬ পর্যন্ত গোনা — চার পদ্ধতিতে পাশাপাশি

নিচের সারণিটি একবার মন দিয়ে দেখুন, বিশেষ করে বাইনারি কলামে। ডান দিকের bit প্রতি ধাপে বদলায়, তার বাঁয়েরটি প্রতি দুই ধাপে, তার বাঁয়েরটি প্রতি চার ধাপে — ঠিক গাড়ির মিটারের মতো, শুধু প্রতিটি চাকায় দুটি অঙ্ক। আর খেয়াল করুন: ৮-এ পৌঁছে অক্টাল “10” হয়, ১৬-তে পৌঁছে হেক্স “10” হয়। যেকোনো ভিত্তিতে “10” মানে ভিত্তিটি নিজেই।

দশমিকবাইনারিঅক্টালহেক্সদশমিকবাইনারিঅক্টালহেক্স
000000091001119
100011110101012A
200102211101113B
300113312110014C
401004413110115D
501015514111016E
601106615111117F
701117716100002010
81000108— ১৬-তে বাইনারি পাঁচ অঙ্কে গেল

এই সারণির প্রথম আটটি সারি (০–৭, তিন bit) আর পুরো ষোলোটি সারি (০–F, চার bit) মুখস্থ থাকলে বাইনারি-অক্টাল-হেক্সের রূপান্তর কয়েক সেকেন্ডের কাজ হয়ে যায়। চার bit-এর এই দলটিকেই পর্ব ০৪-এ nibble বলে চিনেছেন — একটি হেক্স অঙ্ক = একটি nibble.

৩ · দশমিক থেকে বাইনারি, অক্টাল আর হেক্স — বারবার ভাগ

দশমিক পূর্ণসংখ্যাকে অন্য ভিত্তিতে নেওয়ার প্রচলিত নিয়ম হলো ভাগ পদ্ধতি (repeated division):

  1. সংখ্যাটিকে নতুন ভিত্তি দিয়ে ভাগ করুন; ভাগফল নিচে লিখুন, ভাগশেষ পাশে লিখুন।
  2. ভাগফলকে আবার একই ভিত্তি দিয়ে ভাগ করুন। ভাগফল ০ না হওয়া পর্যন্ত চালিয়ে যান।
  3. ভাগশেষগুলো নিচ থেকে ওপরে পড়ুন — সেটিই উত্তর। প্রথম ভাগশেষটি LSB, শেষেরটি MSB.

কেন কাজ করে? সংখ্যাকে ২ দিয়ে ভাগ করলে ভাগশেষ বলে দেয় সংখ্যাটি বিজোড় কি না — অর্থাৎ ১-এর ঘরে 1 বসবে কি না। ভাগফল হলো বাকি সব ঘর এক ধাপ ডানে সরানো সংখ্যা। তাই প্রতিটি ভাগে আমরা ডান দিক থেকে একটি করে অঙ্ক বের করে আনি — এ কারণেই প্রথম ভাগশেষ সবচেয়ে ডানে বসে। নিচে (156)10-কে বাইনারিতে নিন, ধাপে ধাপে:

খাতার ভাগের সারণি
ভাজকভাজ্যভাগফলভাগশেষ
  1. শুরু। লক্ষ্য: ১৫৬-কে বাইনারিতে লেখা। নতুন ভিত্তি ২, তাই প্রতিবার ২ দিয়ে ভাগ করব। ভাগশেষ হবে শুধু 0 অথবা 1 — বাইনারির দুটি অঙ্ক।
  2. 156 ÷ 2 = 78, ভাগশেষ 0. ১৫৬ জোড়, তাই ভাগশেষ 0 — উত্তরের সবচেয়ে ডানের bit (LSB) হলো 0.
  3. 78 ÷ 2 = 39, ভাগশেষ 0. আগের ভাগফল ৭৮ এখন নতুন ভাজ্য। এটিও জোড়, ভাগশেষ 0 — ডান দিক থেকে দ্বিতীয় bit.
  4. 39 ÷ 2 = 19, ভাগশেষ 1. ৩৯ বিজোড় — ২ × ১৯ = ৩৮, এক বাকি থাকে।
  5. 19 ÷ 2 = 9, ভাগশেষ 1. ২ × ৯ = ১৮, বাকি ১।
  6. 9 ÷ 2 = 4, ভাগশেষ 1. ২ × ৪ = ৮, বাকি ১।
  7. 4 ÷ 2 = 2, ভাগশেষ 0. ৪ জোড়, কিছু বাকি থাকে না।
  8. 2 ÷ 2 = 1, ভাগশেষ 0. ভাগফল এখনো ১ — থামা যাবে না। অনেকে এখানেই থেমে শেষ 1-টি হারিয়ে ফেলেন।
  9. 1 ÷ 2 = 0, ভাগশেষ 1. ভাগফল ০ হলো — এবার থামুন। শেষ ভাগশেষ 1 হলো সবচেয়ে বাঁয়ের bit (MSB).
  10. নিচ থেকে ওপরে পড়ুন। 1 0 0 1 1 1 0 0 — তাই (156)10 = (10011100)2. যাচাই: ১২৮ + ১৬ + ৮ + ৪ = ১৫৬. ওপর থেকে পড়লে পেতেন 00111001 = ৫৭ — সম্পূর্ণ ভুল উত্তর।

পরীক্ষার খাতায় একই কাজটি সাধারণত এভাবে সংক্ষেপে লেখা হয় — বাঁয়ে ভাজক, মাঝে ভাগফলের সারি, ডানে ভাগশেষ, আর পাশে একটি তীর ওপরের দিকে:

2 | 156
  |-----
2 |  78   — 0   ↑ (LSB)
2 |  39   — 0   ↑
2 |  19   — 1   ↑
2 |   9   — 1   ↑
2 |   4   — 1   ↑
2 |   2   — 0   ↑
2 |   1   — 0   ↑
  |   0   — 1   ↑ (MSB)   উত্তর: (156)10 = (10011100)2

একই নিয়মে অক্টাল আর হেক্স

ভিত্তি বদলালে শুধু ভাজক বদলায়। ১৫৬-কে ৮ দিয়ে ভাগ করলে অক্টাল, ১৬ দিয়ে ভাগ করলে হেক্স পাবেন। হেক্সে ১০ থেকে ১৫ ভাগশেষ এলে অক্ষরে লিখুন — ১২ মানে C.

(156)10 → অক্টাল

156 ÷ 8 = 19, ভাগশেষ 4
19 ÷ 8 = 2, ভাগশেষ 3
2 ÷ 8 = 0, ভাগশেষ 2
নিচ থেকে ওপরে: (234)8
যাচাই: ২×৬৪ + ৩×৮ + ৪ = ১৫৬

(156)10 → হেক্স

156 ÷ 16 = 9, ভাগশেষ 12 = C
9 ÷ 16 = 0, ভাগশেষ 9
নিচ থেকে ওপরে: (9C)16
যাচাই: ৯×১৬ + ১২ = ১৫৬

আরেকটি ছোট উদাহরণ, যা পরীক্ষায় খুব আসে: (25)10 → বাইনারি। ২৫ ÷ ২ = ১২ (ভাগশেষ 1), ১২ ÷ ২ = ৬ (0), ৬ ÷ ২ = ৩ (0), ৩ ÷ ২ = ১ (1), ১ ÷ ২ = ০ (1). নিচ থেকে ওপরে: (11001)2. যাচাই: ১৬ + ৮ + ১ = ২৫.

দ্রুত বিকল্প — ২-এর ঘাত বিয়োগ করা: ছোট সংখ্যার জন্য ভাগের বদলে মনে মনে বড় থেকে ছোট ২-এর ঘাত বিয়োগ করুন। ১৫৬ থেকে ১২৮ বাদ (৮ নম্বর ঘরে 1), বাকি ২৮; ৬৪ আর ৩২ হয় না (0, 0); ১৬ বাদ (1), বাকি ১২; ৮ বাদ (1), বাকি ৪; ৪ বাদ (1), বাকি ০; ২ আর ১ লাগে না (0, 0). ফল 10011100 — একই উত্তর। খাতায় অবশ্য প্রশ্নে চাওয়া পদ্ধতিটিই দেখাবেন; সাধারণত সেটি ভাগ পদ্ধতি।

৪ · ভগ্নাংশের রূপান্তর — বারবার গুণ

দশমিক বিন্দুর পরের অংশের জন্য নিয়মটি ঠিক উল্টো — ভাগ নয়, গুণ পদ্ধতি (repeated multiplication):

  1. ভগ্নাংশটিকে নতুন ভিত্তি দিয়ে গুণ করুন।
  2. গুণফলের পূর্ণ অংশটি (বিন্দুর বাঁয়ের অঙ্ক) আলাদা করে লিখুন — এটিই পরের অঙ্ক।
  3. শুধু ভগ্নাংশ অংশটি নিয়ে আবার গুণ করুন। ভগ্নাংশ ০ হলে, বা প্রশ্নে চাওয়া সংখ্যক অঙ্ক পেলে থামুন।
  4. পূর্ণ অংশগুলো ওপর থেকে নিচে পড়ুন — বিন্দুর ঠিক পর থেকে।

যুক্তিটা আগের মতোই: ০.৬২৫-কে ২ দিয়ে গুণ করা মানে বাইনারি বিন্দুকে এক ঘর ডানে সরানো। বিন্দুর ঠিক ডানের অঙ্ক (ওজন ½) তখন বিন্দুর বাঁয়ে চলে আসে — আমরা সেটি তুলে নিই। প্রথম যে অঙ্কটি পাই সেটি বিন্দুর সবচেয়ে কাছের, তাই এবার পড়তে হয় ওপর থেকে নিচে।

গুণের সারণি
ভগ্নাংশগুণগুণফলপূর্ণ অংশ
  1. শুরু। শুধু ভগ্নাংশ ০.৬২৫ নিয়ে কাজ। নতুন ভিত্তি ২, তাই প্রতিবার ২ দিয়ে গুণ করব আর পূর্ণ অংশটি তুলে নেব।
  2. 0.625 × 2 = 1.25. পূর্ণ অংশ 1 — এটি বিন্দুর পরের প্রথম অঙ্ক (ওজন ½)। পরের ধাপে নেব শুধু ০.২৫, পূর্ণ অংশ বাদ দিয়ে।
  3. 0.25 × 2 = 0.5. পূর্ণ অংশ 0 — দ্বিতীয় অঙ্ক (ওজন ¼)। এটিও লিখতে হবে; 0 বাদ দিলে পরের অঙ্কগুলোর ঘর ভুল হয়ে যাবে।
  4. 0.5 × 2 = 1.0. পূর্ণ অংশ 1, আর ভগ্নাংশ এখন ঠিক শূন্য — রূপান্তর শেষ, সংখ্যাটি “সসীম” (terminating).
  5. ওপর থেকে নিচে পড়ুন: .101. যাচাই: ½ + ⅛ = ০.৫ + ০.১২৫ = ০.৬২৫. পূর্ণ অংশ ৪৫-কে ভাগ পদ্ধতিতে নিলে 101101 — তাই (45.625)10 = (101101.101)2. পূর্ণ অংশ আর ভগ্নাংশ সবসময় আলাদা করে রূপান্তর করে শেষে বিন্দু দিয়ে জোড়া দিন।

অক্টাল বা হেক্সেও একই নিয়ম, শুধু গুণক ৮ বা ১৬: ০.৬২৫ × ৮ = ৫.০ → (0.5)8; ০.৬২৫ × ১৬ = ১০.০ → A → (0.A)16. তাই (45.625)10 = (55.5)8 = (2D.A)16.

যে ভগ্নাংশ কখনো শেষ হয় না — 0.1-এর রহস্য

এবার (0.1)10-কে বাইনারিতে নিয়ে দেখুন:

ধাপগুণগুণফলপূর্ণ অংশ
১0.1 × 20.20
২0.2 × 20.40
৩0.4 × 20.80
৪0.8 × 21.61
৫0.6 × 21.21
৬0.2 × 20.40 ← ধাপ ২-এর ০.২ আবার ফিরে এল!

০.২ আগেও এসেছিল, তাই এখান থেকে একই ক্রম চিরকাল ঘুরতে থাকবে: (0.1)10 = (0.0001100110011…)2, “0011” অংশটি অসীমবার। যেমন দশমিকে ⅓ = ০.৩৩৩… কখনো শেষ হয় না, তেমনি বাইনারিতে ০.১ শেষ হয় না। কোন ভগ্নাংশ শেষ হবে? যার হর (লঘিষ্ঠ আকারে) শুধু ২-এর ঘাত — ½, ¼, ⅜, ⅝ ইত্যাদি। ০.১ = ১/১০, আর ১০-এ ৫ আছে, তাই বাইনারিতে সে পৌনঃপুনিক।

কম্পিউটারও এখানে পুরো মান রাখতে পারে না। সীমিত সংখ্যক bit-এ অসীম ভগ্নাংশ কেটে রাখতে হয়, তাই বেশিরভাগ প্রোগ্রামিং ভাষায় 0.1 + 0.2 হিসাব করলে আসে 0.30000000000000004. এটি বাগ নয়, ভিত্তির সীমাবদ্ধতা। পরীক্ষায় পৌনঃপুনিক ভগ্নাংশ এলে সাধারণত “৪ বা ৫ অঙ্ক পর্যন্ত” নির্দিষ্ট করা থাকে — ততটুকু গুণ করে থামুন, আর লিখুন “(প্রায়)”। ব্যাংক বা হিসাবের সফটওয়্যার তাই টাকা-পয়সা প্রায়ই পয়সার পূর্ণসংখ্যায় (বা দশমিক-ভিত্তিক বিশেষ টাইপে) রাখে।

৫ · যেকোনো ভিত্তি থেকে দশমিক — স্থানীয় মানে বিস্তার

উল্টো দিকের রূপান্তর সবচেয়ে সহজ: অংশ ২-এর সূত্রটি সরাসরি প্রয়োগ করুন। প্রতিটি অঙ্কের নিচে তার অবস্থান লিখুন, ওজন বের করুন, গুণ করুন, যোগ করুন। একে বলে positional expansion বা স্থানীয় মানে বিস্তার। পূর্ণ অংশ আর ভগ্নাংশ — দুটিই একসাথে করা যায়:

অঙ্ক10110.101
অবস্থান43210.−1−2−3
ওজন2⁴=162³=82²=42¹=22⁰=1.2⁻¹=0.52⁻²=0.252⁻³=0.125
অঙ্ক × ওজন160420.0.500.125
  1. সংখ্যাটি লিখুন। (10110.101)2 — বিন্দুর বাঁয়ে পাঁচটি অঙ্ক, ডানে তিনটি। প্রতিটি অঙ্কের জন্য আলাদা ঘর রাখুন, বিন্দুটিও স্পষ্ট করে।
  2. অবস্থান নম্বর। বিন্দুর ঠিক বাঁয়ের অঙ্কটি অবস্থান 0; বাঁ দিকে যেতে যেতে 1, 2, 3, 4. বিন্দুর ডানে −1, −2, −3. অবস্থান গোনা শুরু হয় বিন্দু থেকে, সংখ্যার শুরু থেকে নয়।
  3. ওজন = ভিত্তিঅবস্থান. বাইনারিতে ১৬, ৮, ৪, ২, ১ আর বিন্দুর পরে ½, ¼, ⅛ — প্রতি ঘরে আগেরটির অর্ধেক।
  4. অঙ্ক × ওজন। যে ঘরে 0, তার গুণফল 0 — বাইনারিতে আসলে শুধু 1-ওয়ালা ঘরগুলোর ওজন বেছে নিলেই হয়।
  5. পূর্ণ অংশ যোগ। ১৬ + ৪ + ২ = ২২.
  6. ভগ্নাংশ যোগ, তারপর জোড়া। ০.৫ + ০.১২৫ = ০.৬২৫. তাই (10110.101)2 = (22.625)10. খাতায় এক লাইনে: 1×2⁴ + 0×2³ + 1×2² + 1×2¹ + 0×2⁰ + 1×2⁻¹ + 0×2⁻² + 1×2⁻³ = ২২.৬২৫.

অক্টাল আর হেক্স থেকে দশমিক

ঠিক একই নিয়ম, শুধু ওজনগুলো ৮ বা ১৬-এর ঘাত:

  • (157)8 = 1×8² + 5×8¹ + 7×8⁰ = ৬৪ + ৪০ + ৭ = (111)10
  • (2AF)16 = 2×16² + 10×16¹ + 15×16⁰ = ৫১২ + ১৬০ + ১৫ = (687)10
  • (1E)16 = 1×16 + 14 = (30)10; (FF)16 = 15×16 + 15 = (255)10
  • (17.4)8 = 1×8 + 7 + 4×8⁻¹ = ৮ + ৭ + ০.৫ = (15.5)10

মনে মনে দ্রুত হিসাবের কৌশল — “দ্বিগুণ করে যোগ”: বাইনারি পূর্ণসংখ্যা বাঁ থেকে পড়ুন। শুরুতে ০; প্রতিটি bit-এ আগের ফল দ্বিগুণ করে সেই bit যোগ করুন। 10011100: ১ → ২ → ৪ → ৯ → ১৯ → ৩৯ → ৭৮ → ১৫৬. লক্ষ করুন, সংখ্যাগুলো অংশ ৩-এর ভাগের সারণির ভাগফলগুলোই, উল্টো ক্রমে! অক্টালে ৮ গুণ, হেক্সে ১৬ গুণ করে একই কৌশল খাটে।

৬ · বাইনারি ↔ অক্টাল ↔ হেক্স — ৩ আর ৪ bit-এর দল

এখানেই অক্টাল আর হেক্সের আসল সুবিধা। ৮ = ২³, তাই প্রতিটি অক্টাল অঙ্ক ঠিক ৩টি bit-এর সমান; ১৬ = ২⁴, তাই প্রতিটি হেক্স অঙ্ক ঠিক ৪টি bit-এর সমান। ফলে ভাগ-গুণ ছাড়াই, শুধু দল বেঁধে রূপান্তর করা যায়:

  • বাইনারি → অক্টাল: বিন্দু থেকে শুরু করে ৩টি করে bit-এর দল বাঁধুন — পূর্ণ অংশে ডান থেকে বাঁয়ে, ভগ্নাংশে বাঁ থেকে ডানে। অসম্পূর্ণ দলে 0 বসিয়ে পূরণ করুন (পূর্ণ অংশে বাঁয়ে, ভগ্নাংশে ডানে)। প্রতিটি দলকে একটি অঙ্কে লিখুন।
  • বাইনারি → হেক্স: একই নিয়ম, ৪টি করে bit.
  • অক্টাল/হেক্স → বাইনারি: প্রতিটি অঙ্ককে ৩ বা ৪ bit-এ লিখে পাশাপাশি বসান — প্রতিটি দলে সামনের 0 সহ পুরো ৩/৪টি bit লিখতে হবে।
দলে ভাগের খাতা
বাইনারি
৪-bit দল
হেক্স
৩-bit দল
অক্টাল
যাচাই (দশমিক)
  1. সংখ্যাটি। (1101011101)2 — দশটি bit. দশ ৪ দিয়েও বিভাজ্য নয়, ৩ দিয়েও নয় — তাই দুই রূপান্তরেই বাঁ দিকে 0 বসাতে হবে।
  2. ডান থেকে ৪টি করে। শেষ চারটি 1101, তার আগের চারটি 0101, আর বাঁয়ে বাকি থাকে মাত্র 11. বাঁ দিক থেকে দল বাঁধলে (1101 0111 01) সম্পূর্ণ ভুল উত্তর আসত।
  3. বাঁয়ে 0 বসিয়ে পূরণ। 11 হয় 0011. সংখ্যার বাঁয়ে 0 বসালে মান বদলায় না — যেমন ০৭৫ টাকা আর ৭৫ টাকা একই।
  4. প্রতিটি দল একটি হেক্স অঙ্ক। 0011 = 3, 0101 = 5, 1101 = 13 = D. উত্তর (35D)16. দশটি অঙ্ক নেমে এল তিনটিতে!
  5. এবার অক্টাল: ডান থেকে ৩টি করে। 101, 011, 101, আর বাঁয়ে একা 1.
  6. বাঁয়ে 0 বসিয়ে পূরণ। 1 হয় 001. এখন চারটি পূর্ণ দল: 001 101 011 101.
  7. প্রতিটি দল একটি অক্টাল অঙ্ক। 001 = 1, 101 = 5, 011 = 3, 101 = 5. উত্তর (1535)8.
  8. যাচাই। (35D)16 = ৩×২৫৬ + ৫×১৬ + ১৩ = ৮৬১; (1535)8 = ১×৫১২ + ৫×৬৪ + ৩×৮ + ৫ = ৮৬১. দুটিই একই দশমিক মান দিল — উত্তর ঠিক।

বিন্দু থাকলে ভগ্নাংশ অংশে দল বাঁধুন বিন্দু থেকে ডানে, আর ঘাটতি পূরণ করুন ডান দিকে 0 বসিয়ে। যেমন (101101.101)2: পূর্ণ অংশ 0010 1101 = 2D, ভগ্নাংশ 1010 = A, তাই (2D.A)16; অক্টালে 101 101 . 101 = (55.5)8 — অংশ ৪-এর উত্তরের সাথে হুবহু মিলে গেল। ভগ্নাংশে বাঁ দিকে 0 বসালে (.0101 = 5) উত্তর ভুল হতো।

অক্টাল ↔ হেক্স — বাইনারির সেতু দিয়ে

৮ আর ১৬-এর মধ্যে সরাসরি দল বাঁধার সম্পর্ক নেই। তাই সহজ পথ: আগে বাইনারিতে, তারপর নতুন মাপে দল।

(725)8 → হেক্স

প্রতিটি অঙ্ক ৩ bit-এ: 7 = 111, 2 = 010, 5 = 101 → 111010101
ডান থেকে ৪টি করে: 1 1101 0101 → 0001 1101 0101
উত্তর: (1D5)16 (দুটিই দশমিকে ৪৬৯)

(2AF)16 → অক্টাল

প্রতিটি অঙ্ক ৪ bit-এ: 2 = 0010, A = 1010, F = 1111 → 001010101111
ডান থেকে ৩টি করে: 001 010 101 111
উত্তর: (1257)8 (দুটিই দশমিকে ৬৮৭)

দশমিকের মধ্য দিয়েও যাওয়া যায় (অক্টাল → দশমিক → হেক্স), কিন্তু তাতে ভাগ-গুণ বেশি, ভুলের সুযোগও বেশি। পরীক্ষায় “বাইনারির মাধ্যমে” বলা থাকলে অবশ্যই বাইনারির পথ দেখাবেন।

৭ · হেক্স সবখানে — রং, MAC, মেমরি আর Unicode; আর n bit-এর হিসাব

হেক্স শুধু পাঠ্যবইয়ের বিষয় নয়। একবার চিনে ফেললে চারপাশে সবখানে দেখবেন — কারণ এক byte (৮ bit) ঠিক দুটি হেক্স অঙ্কে ধরে, ০০ থেকে FF. লম্বা বাইনারি পড়ার জন্য এর চেয়ে সুবিধাজনক কিছু নেই।

কোথায়উদাহরণমানে কী
ওয়েবের রং (hex color)#1E90FFলাল 1E = ৩০, সবুজ 90 = ১৪৪, নীল FF = ২৫৫ — একটি উজ্জ্বল নীল (CSS-এ যার নাম DodgerBlue). প্রতিটি রঙের জন্য ১ byte, মোট ৩ byte (পর্ব ২৮)
নেটওয়ার্ক কার্ডের পরিচয় (MAC address)3C:52:82:1A:9F:04ছয় জোড়া হেক্স = ৬ byte = ৪৮ bit; প্রতিটি নেটওয়ার্ক কার্ডের কারখানায় দেওয়া ঠিকানা (পর্ব ৩২)
মেমরির ঠিকানা (memory address)0x7FFE5A3CRAM-এর কোন ঘরে ডেটা আছে — প্রোগ্রামের error বার্তা আর debugger-এ দেখা যায় (পর্ব ২৫)
Unicode code pointU+0995বাংলা “ক”-এর স্থায়ী নম্বর; বাংলার পুরো ব্লক U+0980 থেকে U+09FF (পর্ব ০৭, ১৮)
IPv6 ঠিকানা2001:db8::1১২৮ bit-এর IP address, ৪টি করে হেক্স অঙ্কের দলে লেখা (পর্ব ৩৩)
Linux ফাইল-অনুমতি (অক্টাল)chmod 755৭ = 111 = rwx, ৫ = 101 = r-x: তিনটি করে bit — অক্টাল এখনো যেখানে টিকে আছে (পর্ব ২৯)

n bit-এ কতগুলো মান — ২ⁿ-এর নিয়ম

১ bit-এ ২ রকম মান (0, 1), ২ bit-এ ৪ রকম (00, 01, 10, 11), ৩ bit-এ ৮ রকম। প্রতিটি নতুন bit সম্ভাবনা দ্বিগুণ করে। তাই:

n bit দিয়ে মোট ২ⁿ রকম মান · সবচেয়ে বড় মান ২ⁿ − ১
৮ bit → ২৫৬টি মান (০–২৫৫) · ১৬ bit → ৬৫,৫৩৬টি · ২৪ bit রং → ১,৬৭,৭৭,২১৬টি

উল্টো প্রশ্নও আসে: N রকম মান রাখতে কমপক্ষে কত bit লাগবে? এমন সবচেয়ে ছোট n খুঁজুন যাতে ২ⁿ ≥ N. ইংরেজির ২৬টি বড় হাতের অক্ষর → ৫ bit (২⁵ = ৩২); একটি ক্লাসের ২০০ জন শিক্ষার্থীর রোল → ৮ bit (২⁷ = ১২৮ যথেষ্ট নয়, ২⁸ = ২৫৬)। একইভাবে n অঙ্কের যেকোনো ভিত্তির সবচেয়ে বড় সংখ্যা bⁿ − ১: তিন অঙ্কের সবচেয়ে বড় অক্টাল (777)8 = ৮³ − ১ = ৫১১.

২-এর ঘাতের সারণি — একবার মুখস্থ, সারা জীবন কাজে

ঘাতমানঘাতমানঘাতমান
2⁰12⁶642¹²4096
2¹22⁷1282¹³8192
2²42⁸2562¹⁴16384
2³82⁹5122¹⁵32768
2⁴162¹⁰1024 (≈ হাজার, “কিলো”)2¹⁶65536
2⁵322¹¹20482²⁰1048576 (≈ দশ লাখ, “মেগা”)

২¹⁰ = ১০২৪ ≈ ১০০০ — এই কাকতালীয় মিলটিই পর্ব ০৪-এর “1 KB = 1024 byte” আর “1 TB ড্রাইভে 931 GB” ধাঁধার মূল। আর ২⁸ − ১ = ২৫৫ মনে রাখলে বুঝবেন কেন রঙের প্রতিটি মান আর IPv4 ঠিকানার প্রতিটি অংশ ০ থেকে ২৫৫-এর মধ্যে।

নিজে চালিয়ে দেখুন — হাতের পদ্ধতির একটি ছোট রূপান্তরযন্ত্র

নিচের প্রোগ্রামটি ঠিক খাতার নিয়মে কাজ করে: পূর্ণ অংশকে বারবার ভাগ করে প্রতিটি ভাগের সারি ছাপায়, ভগ্নাংশকে বারবার গুণ করে প্রতিটি গুণফল ছাপায়, তারপর উত্তরকে আবার দশমিকে ফিরিয়ে যাচাই করে। চালান চাপুন, তারপর শেষের তালিকায় নিজের সংখ্যা আর ভিত্তি বসিয়ে আবার চালান:

// হাতের পদ্ধতি: পূর্ণ অংশ বারবার ভাগ, ভগ্নাংশ বারবার গুণ
const DIG = "0123456789ABCDEF";
function toBase(num, b) {
  let n = Math.floor(num), f = num - n, s = "";
  console.log(`--- ${num} -> base ${b} ---`);
  do {
    const q = Math.floor(n / b), r = n % b;
    console.log(`${b} | ${n}  ভাগফল ${q}, ভাগশেষ ${DIG[r]}`);
    s = DIG[r] + s; n = q;             // নতুন ভাগশেষ বাঁ দিকে বসে
  } while (n > 0);
  for (let i = 0; i < 8 && f > 0; i++) {
    const p = f * b, d = Math.floor(p);
    console.log(`  ${f} x ${b} = ${p}  -> ${DIG[d]}`);
    s += (i ? "" : ".") + DIG[d]; f = p - d;  // পূর্ণ অংশ ওপর থেকে নিচে
  }
  return s;
}
for (const [x, b] of [[156, 2], [156, 8], [156, 16], [255, 16], [45.625, 2], [45.625, 16]]) {
  const ans = toBase(x, b), [ip, fp = ""] = ans.split(".");
  const back = parseInt(ip, b) + [...fp].reduce((a, c, i) => a + parseInt(c, b) / b ** (i + 1), 0);
  console.log(`ফল: (${ans}) base ${b}  | যাচাই: দশমিকে ফেরত = ${back}`);
}

প্রত্যাশিত আউটপুটের মূল লাইনগুলো: ফল: (10011100) base 2, (234) base 8, (9C) base 16, (FF) base 16, (101101.101) base 2 আর (2D.A) base 16 — প্রতিটির পাশে “দশমিকে ফেরত” মূল সংখ্যাটিই দেখায়। ১৫৬ → বাইনারির আটটি ভাগের সারি অংশ ৩-এর সারণির হুবহু নকল। n % b হলো ভাগশেষ, Math.floor(n / b) ভাগফল; s = DIG[r] + s নতুন অঙ্ককে বাঁ দিকে বসায় — এটিই “নিচ থেকে ওপরে পড়া”। ভগ্নাংশে নতুন অঙ্ক ডানে যোগ হয় (s += …) — “ওপর থেকে নিচে পড়া”। পৌনঃপুনিক ভগ্নাংশ যেন অনন্তকাল না চলে, তাই সর্বোচ্চ ৮টি অঙ্কে থামানো হয়েছে। তালিকায় [0.1, 2] যোগ করে দেখুন — আটটি অঙ্কের পরেও শেষ হয় না, আর “দশমিকে ফেরত” মান ০.১-এর খুব কাছাকাছি, কিন্তু ঠিক ০.১ নয়।

৮ · পরীক্ষার খাতা — সাধারণ ভুল আর দ্রুত যাচাই

রূপান্তরের নিয়ম সহজ, কিন্তু চাপের মধ্যে ছোট ভুলে পুরো নম্বর কাটা যায়। পরীক্ষার খাতায় সবচেয়ে বেশি যে ভুলগুলো দেখা যায়:

ভুলউদাহরণঠিক পদ্ধতি
ভাগশেষ ওপর থেকে নিচে পড়া১৫৬ → 00111001 (= ৫৭)ভাগশেষ সবসময় নিচ থেকে ওপরে; ভগ্নাংশের পূর্ণ অংশ ওপর থেকে নিচে
শেষ ভাগ বাদ দেওয়াভাগফল ১ পেয়েই থেমে যাওয়াভাগফল ০ না হওয়া পর্যন্ত চালান; শেষ ভাগশেষটিই MSB
দল বাঁ দিক থেকে বাঁধা1101011101 → 1101 0111 01পূর্ণ অংশে ডান (বিন্দু) থেকে; ভগ্নাংশে বিন্দু থেকে ডানে
দলের ভেতরের সামনের 0 বাদ দেওয়া(725)8 → 111 10 101প্রতিটি অক্টাল অঙ্ক ঠিক ৩ bit, হেক্স অঙ্ক ঠিক ৪ bit: 2 = 010
ভিত্তির বাইরের অঙ্ক(1289)8, (102)2অক্টালে ৮ বা ৯ থাকতে পারে না, বাইনারিতে ২ নেই — এমন “সংখ্যা” দেখলেই অবৈধ
হেক্স অক্ষরের মান গুলিয়ে ফেলাB = ১২ ধরে নেওয়াA = ১০, B = ১১, C = ১২, D = ১৩, E = ১৪, F = ১৫
ভগ্নাংশের ওজন ভুল(0.1)2 = ০.১ ধরাবিন্দুর পরের প্রথম ঘরের ওজন b⁻¹: বাইনারিতে ০.৫
উত্তরে ভিত্তি না লেখা“উত্তর: 234”সবসময় (234)8 — নইলে পরীক্ষক কোন ভিত্তি বুঝবেন?
সোনার নিয়ম

উত্তর পেলে উল্টো দিকে ফিরিয়ে দেখুন। দশমিক → বাইনারি করলে, বাইনারিকে আবার দশমিকে নিন (মনে মনে “দ্বিগুণ করে যোগ” কৌশলে)। দুটি আলাদা পথে একই মান এলে উত্তর প্রায় নিশ্চিত ঠিক। পরীক্ষায় এর জন্য আধা মিনিট খরচ করা সবচেয়ে লাভের বিনিয়োগ।

দ্রুত যাচাইয়ের কয়েকটি কৌশল

  • জোড়-বিজোড়: দশমিক সংখ্যা বিজোড় হলে বাইনারির শেষ bit অবশ্যই 1.
  • দৈর্ঘ্য: ১২৮ থেকে ২৫৫-এর মধ্যের সংখ্যা বাইনারিতে ঠিক ৮ অঙ্কের; ৬৪–১২৭ হলে ৭ অঙ্কের। ১৫৬-এর উত্তর ৭ বা ৯ অঙ্কের এলে কোথাও ভুল।
  • সব 1: n-টি 1 = ২ⁿ − ১. যেমন 11111111 = ২৫৫, 1111 = ১৫ = F.
  • বাঁয়ে একটি 0 যোগ করলে মান একই, ডানে যোগ করলে দ্বিগুণ — দশমিকে ডানে 0 যোগ করলে যেমন দশ গুণ হয়।

পরীক্ষা ও ইন্টারভিউতে — HSC ICT, SSC আর BCS-ব্যাংক-সরকারি চাকরির পরীক্ষায় এ ধরনের প্রশ্ন প্রায়ই আসে:

  • হেক্সাডেসিমাল পদ্ধতির ভিত্তি কত? ১৬ (অঙ্ক 0–9 আর A–F). অক্টালের ৮, বাইনারির ২.
  • (25)10 = ? (বাইনারি) (11001)2 — ভাগ পদ্ধতিতে, ভাগশেষ নিচ থেকে ওপরে।
  • তিন অঙ্কের সবচেয়ে বড় অক্টাল সংখ্যার দশমিক মান? (777)8 = ৫১১.
  • (1010.1)2-এর দশমিক মান? ৮ + ২ + ০.৫ = ১০.৫.
  • ১ byte-এ সবচেয়ে বড় কোন সংখ্যা রাখা যায়? ২⁸ − ১ = ২৫৫ = (FF)16.

HSC-র সৃজনশীল প্রশ্নে সাধারণত একটি উদ্দীপক থাকে (যেমন কোনো শিক্ষার্থীর রোল নম্বর বা জন্মসালকে বাইনারি-হেক্সে নেওয়া), তারপর জ্ঞানমূলক (“অক্টাল সংখ্যা পদ্ধতি কী?”), অনুধাবনমূলক (“হেক্সাডেসিমাল কেন বাইনারির সংক্ষিপ্ত রূপ — ব্যাখ্যা করুন”), প্রয়োগ (একটি রূপান্তর পূর্ণ ধাপসহ) আর উচ্চতর দক্ষতা (দুটি রূপান্তরের ফল তুলনা বা যোগ-বিয়োগ — পর্ব ১৭) অংশ। প্রয়োগের প্রশ্নে খাতায় পুরো ভাগের সারণি না দেখালে নম্বর কাটা যেতে পারে। কৌশলের বিস্তারিত দেখবেন পর্ব ৫১-এ।

আরও গভীরে: কম্পিউটার ভেতরে ঋণাত্মক সংখ্যা রাখে 2's complement পদ্ধতিতে, আর দশমিক ভগ্নাংশ রাখে IEEE 754 floating-point মানে — sign, exponent আর mantissa, অনেকটা বৈজ্ঞানিক নোটেশনের বাইনারি রূপ। প্রথমটি পর্ব ১৭-এ দেখবেন; দ্বিতীয়টি আর CPU-র ভেতরের অ্যাডার সার্কিট দেখতে Computer Architecture & Digital Logic কোর্সটি ঘুরে আসুন। প্রোগ্রাম লিখে রূপান্তর করতে চাইলে JavaScript বা C কোর্সে bitwise operator-এর পর্বগুলো দেখুন।

৯ · AI-এর যুগে — রূপান্তর যাচাই করুন, মুখস্থ নয়

AI চ্যাটবট বা ক্যালকুলেটর অ্যাপ (156)10-কে বাইনারিতে নিতে খুব ভালো — সাধারণ ছোট রূপান্তরে প্রায় কখনো ভুল করে না। সমস্যা শুরু হয় যখন আপনি খাতার মতো ধাপসহ সমাধান চান, বা সংখ্যা লম্বা হয়, বা ভগ্নাংশ থাকে। ভাষা-মডেল (language model) আসলে হিসাব “করে” না, পরের সম্ভাব্য শব্দ অনুমান করে — তাই ধাপের সারণি দেখতে সুন্দর হলেও মাঝের একটি ভাগশেষ ভুল হতে পারে, আর শেষ উত্তর তবুও আত্মবিশ্বাসী শোনায়।

AI-এর সাধারণ ভুলকীভাবে ধরবেন
ভাগের সারণির মাঝে একটি ভাগফল বা ভাগশেষ ভুল, অথচ শেষ উত্তর ঠিক (বা উল্টোটা)প্রতিটি সারি নিজে মিলিয়ে দেখুন: ভাজক × ভাগফল + ভাগশেষ = ভাজ্য
পৌনঃপুনিক ভগ্নাংশকে সসীম দেখানো (যেমন 0.1 = 0.0001101 “ঠিক”)উত্তরকে দশমিকে ফিরিয়ে দেখুন — ঠিক ০.১ আসে কি না
লম্বা বাইনারি দল বাঁধার সময় বাঁ দিক থেকে দল বাঁধা বা একটি bit হারানোbit গুনে দেখুন; দলগুলো জোড়া দিয়ে মূল সংখ্যা ফিরে আসে কি না
ভাগশেষ ওপর থেকে নিচে সাজানো, কিংবা হেক্সে “12” লিখে দেওয়া (C-এর বদলে)জোড়-বিজোড় আর দৈর্ঘ্যের কৌশলে দ্রুত যাচাই
দুই ভিত্তির রীতি মিশিয়ে ফেলা (যেমন 0o আর 0x)প্রতিটি সংখ্যার পাশে ভিত্তি লেখা আছে কি না দেখুন

AI-কে উত্তর দেওয়ার যন্ত্র না বানিয়ে শিক্ষক আর পরীক্ষক বানান। নিচের prompt-টি কপি করে নিজের সংখ্যা বসান:

আমি HSC ICT-র সংখ্যা পদ্ধতি অনুশীলন করছি। (45.625)₁₀-কে বাইনারি, অক্টাল আর হেক্সাডেসিমালে রূপান্তর করো। ১. পূর্ণ অংশের জন্য ভাগের সারণি (ভাজক, ভাজ্য, ভাগফল, ভাগশেষ) আর ভগ্নাংশের জন্য গুণের সারণি দাও — খাতায় যেভাবে লেখা হয়। ২. প্রতিটি সারিতে ভাজক × ভাগফল + ভাগশেষ = ভাজ্য মিলছে কি না পাশে লেখো। ৩. শেষে প্রতিটি উত্তরকে আবার দশমিকে ফিরিয়ে যাচাই দেখাও। ৪. ভগ্নাংশ পৌনঃপুনিক হলে স্পষ্ট বলো, আর কয় অঙ্কে থামিয়েছ তা লেখো। ৫. উত্তর দেওয়ার আগে আমাকে প্রথম দুটি ধাপ নিজে করতে বলো, তারপর আমার উত্তর মিলিয়ে দাও।

AI-এর উত্তর হাতে পেলে — যাচাইয়ের চেকলিস্ট

মনে রাখবেন, পরীক্ষার হলে AI থাকবে না, কিন্তু যাচাইয়ের অভ্যাস থাকবে। AI দিয়ে যত খুশি অনুশীলনের প্রশ্ন বানিয়ে নিন — কিন্তু সমাধান আগে নিজে করুন, তারপর মিলিয়ে দেখুন।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন — তারপর “→ উত্তর” চাপুন। সংখ্যা লেখার এই ইতিহাস আসলে মানুষের চিন্তার ইতিহাস।

প্র ০১কম্পিউটার আবিষ্কারের আড়াইশো বছর আগে Leibniz কেন বাইনারি নিয়ে লিখেছিলেন? আর প্রাচীন চীনের I Ching-এর সাথে এর কী সম্পর্ক?

জার্মান গণিতবিদ ও দার্শনিক Gottfried Wilhelm Leibniz — যিনি Newton-এর পাশাপাশি স্বাধীনভাবে ক্যালকুলাস আবিষ্কার করেছিলেন — ১৬৭০-এর দশকের শেষ দিক থেকেই শুধু 0 আর 1 দিয়ে সংখ্যা লেখার কথা ভাবছিলেন। তাঁর আগ্রহ ছিল দার্শনিক: সব কিছুকে কি সবচেয়ে সরল উপাদানে ভেঙে ফেলা যায়? তাঁর কাছে 1 আর 0 ছিল “সত্তা” আর “শূন্যতা”-র প্রতীক। ১৭০৩ সালে তিনি ফরাসি বিজ্ঞান একাডেমির জন্য একটি প্রবন্ধ লেখেন — “Explication de l'Arithmétique Binaire” — যেখানে বাইনারিতে যোগ, বিয়োগ, গুণ, ভাগের নিয়ম দেখানো হয়।

এর ঠিক আগে চীনে থাকা এক Jesuit পাদ্রি, Joachim Bouvet, তাঁকে প্রাচীন চীনা গ্রন্থ I Ching-এর (“পরিবর্তনের গ্রন্থ”) ৬৪টি hexagram-এর একটি সাজানো চিত্র পাঠান। প্রতিটি hexagram ছয়টি রেখা দিয়ে তৈরি, প্রতিটি রেখা হয় অখণ্ড (—) নয় খণ্ডিত (- -)। Leibniz অবাক হয়ে দেখলেন, খণ্ডিত রেখাকে 0 আর অখণ্ডকে 1 ধরলে সেই বিশেষ ক্রমে hexagram-গুলো ঠিক ০ থেকে ৬৩ পর্যন্ত বাইনারি সংখ্যার ক্রম! ছয়টি রেখা মানে ছয় bit, আর ২⁶ = ৬৪ — এই পর্বের ২ⁿ নিয়মের নিখুঁত উদাহরণ। তাঁর প্রবন্ধে তিনি এই মিলের কথা উল্লেখও করেন।

তবে সাবধান: I Ching-এর রচয়িতারা ভবিষ্যদ্বাণী আর দর্শনের জন্য hexagram ব্যবহার করতেন; তাঁরা স্থানীয় মানের হিসাবপদ্ধতি হিসেবে বাইনারি ব্যবহার করেছিলেন, এমন প্রমাণ নেই। দুটি অবস্থার সব সমাবেশ সাজালে স্বাভাবিকভাবেই বাইনারির গঠন বেরিয়ে আসে। Leibniz-এর বাইনারিও তখন কোনো যন্ত্রে কাজে লাগেনি — তাঁর নিজের তৈরি হিসাবযন্ত্রটিও ছিল দশমিক। প্রায় আড়াইশো বছর পর, ১৯৩০-৪০-এর দশকে, Claude Shannon দেখালেন যে বিদ্যুতের সুইচ দিয়ে যুক্তি আর বাইনারি গণিত দুটোই করা যায় — আর তখনই Leibniz-এর ভাবনা বাস্তবের যন্ত্রে প্রাণ পেল।

মূল উপলব্ধি: বাইনারি কম্পিউটারের জন্য আবিষ্কৃত হয়নি — এটি একটি গাণিতিক সত্য, যা যেকোনো “দুই অবস্থা”-র ব্যবস্থায় লুকিয়ে থাকে। প্রযুক্তি তখনই জেতে, যখন একটি পুরোনো ধারণা উপযুক্ত যন্ত্র খুঁজে পায়।

প্র ০২এক ঘণ্টায় ৬০ মিনিট, এক মিনিটে ৬০ সেকেন্ড, বৃত্তে ৩৬০ ডিগ্রি — দশমিকের যুগে এই ৬০ কোথা থেকে এল?

এই ৬০ এসেছে প্রায় চার হাজার বছরেরও বেশি আগের মেসোপটেমিয়া (আজকের ইরাক) থেকে। সুমেরীয়রা আর পরে ব্যাবিলনীয়রা ৬০ ভিত্তির (sexagesimal) সংখ্যা পদ্ধতি ব্যবহার করত। তারা নরম কাদার ফলকে খাগের কলম চেপে লিখত — মাত্র দুটি চিহ্ন দিয়ে: একটি খাড়া খাঁজ (১) আর একটি কোণাকৃতি খাঁজ (১০)। এ দুটি মিলিয়ে ১ থেকে ৫৯ পর্যন্ত “অঙ্ক” তৈরি হতো, আর সেই অঙ্কগুলো পাশাপাশি বসানো হতো স্থানীয় মানের নিয়মে — ১, ৬০, ৩৬০০… ওজনে। অর্থাৎ ব্যাবিলনীয়রা ইতিহাসের প্রথম পরিচিত positional পদ্ধতিগুলোর একটি ব্যবহার করত।

কেন ৬০? নিশ্চিত উত্তর কেউ জানে না, তবে একটি সুবিধা স্পষ্ট: ৬০-কে ১, ২, ৩, ৪, ৫, ৬, ১০, ১২, ১৫, ২০, ৩০ আর ৬০ — মোট বারোটি সংখ্যা দিয়ে নিঃশেষে ভাগ করা যায়। ১০-কে যায় মাত্র চারটি দিয়ে। ফলে ভাগাভাগির হিসাব — জমি, শস্য, কর — অনেক সহজ হতো। এই পর্বের ভাষায়: ৬০ ভিত্তিতে ⅓, ¼, ⅕, ⅙ সবই “সসীম” ভগ্নাংশ, অথচ দশমিকে ⅓ = ০.৩৩৩… কখনো শেষ হয় না।

ব্যাবিলনীয় জ্যোতির্বিদরা আকাশের হিসাব এই পদ্ধতিতে রাখতেন; পরে গ্রিক জ্যোতির্বিদরা, বিশেষ করে Ptolemy, তাঁদের কোণ আর ভগ্নাংশের হিসাবে ৬০ ভিত্তির ভগ্নাংশ ব্যবহার করেন। সেখান থেকেই ডিগ্রিকে ৬০ ভাগ, সেই ভাগকে আবার ৬০ ভাগ করার রীতি — যা পরে সময়ের হিসাবেও ঢোকে। লাতিনে “pars minuta prima” (প্রথম ছোট ভাগ) থেকে “minute”, আর “pars minuta secunda” (দ্বিতীয় ছোট ভাগ) থেকে “second”. আপনার হাতঘড়ি তাই আজও ব্যাবিলনের ভিত্তিতে চলে।

ব্যাবিলনীয় পদ্ধতির একটি বড় দুর্বলতাও ছিল: দীর্ঘ সময় ধরে শূন্যের কোনো চিহ্ন ছিল না, খালি ঘর বোঝাতে শুধু ফাঁক রাখা হতো — ফলে একই লেখা কখনো ১, কখনো ৬০ পড়া যেত। অনেক পরে একটি ফাঁকা-স্থান চিহ্ন যোগ হয়, কিন্তু পূর্ণাঙ্গ “সংখ্যা” হিসেবে শূন্যের ধারণা আসে ভারতবর্ষ থেকে (পরের প্রশ্ন)।

মূল উপলব্ধি: ভিত্তি বাছাই একটি প্রকৌশল-সিদ্ধান্ত — কোন কাজটি সহজ করতে চান, তার ওপর নির্ভর করে। ব্যাবিলন বেছেছিল ভাগাভাগির সুবিধা, আমরা বেছেছি আঙুল, কম্পিউটার বেছেছে সুইচ।

প্র ০৩আজকের ০–৯ অঙ্ক আর “শূন্য” কোথা থেকে এল, আর ইউরোপে পৌঁছাতে কেন এত সময় লাগল?

আমরা যে দশমিক positional পদ্ধতি ব্যবহার করি, তার জন্ম প্রাচীন ভারতবর্ষে। দশটি চিহ্ন আর স্থানীয় মানের নিয়ম সেখানে খ্রিস্টীয় প্রথম সহস্রাব্দের মাঝামাঝি পরিণত রূপ পায়। কিন্তু সবচেয়ে বৈপ্লবিক ধাপ ছিল শূন্যকে শুধু “খালি ঘরের চিহ্ন” হিসেবে নয়, একটি পূর্ণাঙ্গ সংখ্যা হিসেবে দেখা। ৬২৮ খ্রিস্টাব্দে গণিতবিদ ব্রহ্মগুপ্ত তাঁর “ব্রাহ্মস্ফুটসিদ্ধান্ত” গ্রন্থে শূন্য নিয়ে হিসাবের নিয়ম লেখেন — কোনো সংখ্যা থেকে সেই সংখ্যাই বিয়োগ করলে শূন্য, শূন্য যোগ করলে সংখ্যা বদলায় না, শূন্য দিয়ে গুণ করলে শূন্য। ঋণাত্মক সংখ্যার নিয়মও তিনি দেন (“ঋণ” আর “ধন” নামে)। শূন্য দিয়ে ভাগের প্রশ্নে অবশ্য তাঁর উত্তর আধুনিক গণিতের সাথে মেলে না।

এই পদ্ধতি পরে আরব-পারস্য জগতে পৌঁছায়। নবম শতকে বাগদাদের গণিতবিদ মুহাম্মদ ইবনে মুসা আল-খোয়ারিজমি ভারতীয় সংখ্যা দিয়ে হিসাবের ওপর একটি বই লেখেন। সেই বইয়ের লাতিন অনুবাদে তাঁর নাম হয়ে যায় “Algoritmi” — আর সেখান থেকেই আজকের “algorithm” শব্দ (পর্ব ৩৮)। এজন্যই ইউরোপে এই অঙ্কগুলোকে “Hindu-Arabic numerals” বলা হয়।

ইউরোপে এর জনপ্রিয়তার মূল কৃতিত্ব ইতালির পিসা শহরের Leonardo, যিনি Fibonacci নামে বেশি পরিচিত। বাবার বাণিজ্যের সূত্রে উত্তর আফ্রিকায় বড় হয়ে তিনি আরব গণিতবিদদের কাছে এই পদ্ধতি শেখেন, আর ১২০২ সালে “Liber Abaci” বইয়ে ইউরোপীয় ব্যবসায়ীদের দেখান — লাভ-ক্ষতি, মুদ্রা বিনিময়, সুদ — সব এই অঙ্কে কত সহজ। তবুও পরিবর্তন আসে ধীরে, কয়েক শতাব্দী ধরে। রোমান সংখ্যা আর অ্যাবাকাসে অভ্যস্ত হিসাবরক্ষকেরা নতুন পদ্ধতিকে সন্দেহ করতেন — একটি 0-এর পাশে আরেকটি অঙ্ক বসিয়ে সহজেই খাতার অঙ্ক বদলে দেওয়া যায়, এমন ভয়ও ছিল। ছাপাখানা আসার পর পাটিগণিতের বই ছড়িয়ে পড়লে পনেরো-ষোলো শতকে নতুন পদ্ধতি পুরোপুরি জয়ী হয়।

মূল উপলব্ধি: শূন্য ছাড়া positional পদ্ধতি অসম্পূর্ণ — 101 আর 11-এর পার্থক্য শূন্যই তৈরি করে। আর ভালো প্রযুক্তিও অভ্যাস, ভয় আর অবকাঠামোর বাধা পেরোতে শতাব্দী নিতে পারে।

প্র ০৪প্রথম দিকের বিখ্যাত ইলেকট্রনিক কম্পিউটার ENIAC ছিল দশমিক! তাহলে কম্পিউটার বাইনারিতে গেল কেন?

১৯৪৫ সালে যুক্তরাষ্ট্রের University of Pennsylvania-তে J. Presper Eckert আর John Mauchly-র দল ENIAC তৈরি শেষ করে; ১৯৪৬ সালে এটি জনসমক্ষে আসে। প্রায় আঠারো হাজার vacuum tube-এর এই দানব আসলে হিসাব করত দশমিকে। প্রতিটি দশমিক অঙ্ক রাখার জন্য ছিল দশটি করে অবস্থার একটি “ring counter” — যেন দশ ঘরের একটি চাকা, যার একটিমাত্র ঘর জ্বলে থাকে। মানুষের পরিচিত পদ্ধতি যন্ত্রে হুবহু বসানো স্বাভাবিক মনে হয়েছিল।

কিন্তু দামটা ছিল চড়া। একটি অঙ্ক রাখতেই অনেকগুলো tube লাগত, অথচ তাত্ত্বিকভাবে মাত্র চারটি bit-এই ০–৯ ধরে যায়। প্রতিটি tube একটি সম্ভাব্য ত্রুটির উৎস, আর দশটি ভোল্টেজ-স্তর নির্ভুলভাবে আলাদা করার চেয়ে “আছে/নেই” আলাদা করা অনেক সহজ ও নির্ভরযোগ্য। ১৯৪৫ সালেই, ENIAC-এর উত্তরসূরি EDVAC-এর নকশা নিয়ে আলোচনার ভিত্তিতে, গণিতবিদ John von Neumann “First Draft of a Report on the EDVAC” লেখেন। সেখানে তিনি যুক্তি দেন: যন্ত্রের অংশগুলো স্বভাবতই দুই অবস্থার, তাই বাইনারি ব্যবহার করলে সার্কিট সরল হয়, গুণ-ভাগের যন্ত্র অনেক ছোট হয়। একই রিপোর্টে প্রোগ্রামকেও ডেটার মতো মেমরিতে রাখার ধারণা গুছিয়ে লেখা হয় — যা পর্ব ০২-এ দেখা stored-program নকশার ভিত্তি।

এর আগেই অন্যরাও একই পথে হাঁটছিলেন। ১৯৩৭ সালে Claude Shannon তাঁর MIT-র মাস্টার্স থিসিসে দেখান, relay সুইচের সার্কিট দিয়ে বুলিয়ান অ্যালজেব্রা (পর্ব ১৯) হুবহু প্রয়োগ করা যায়। জার্মানিতে Konrad Zuse-এর Z3 (১৯৪১) relay দিয়ে বাইনারিতে হিসাব করত। এরপর প্রায় সব নতুন কম্পিউটার বাইনারি হয়ে যায়।

তবে দশমিক পুরো হারিয়ে যায়নি। ব্যবসার কম্পিউটারে, যেখানে টাকার হিসাবে ০.১-এর মতো পৌনঃপুনিক ভগ্নাংশের ক্ষুদ্র ভুলও অগ্রহণযোগ্য, দশমিক অঙ্ককে ৪ bit করে রাখার BCD পদ্ধতি (পর্ব ১৮) বহু বছর চলেছে। আজও কিছু বড় mainframe প্রসেসরে দশমিক হিসাবের বিশেষ হার্ডওয়্যার আছে, আর প্রোগ্রামিং ভাষাগুলোতে টাকার হিসাবের জন্য দশমিক-ভিত্তিক টাইপ থাকে।

মূল উপলব্ধি: বাইনারি জিতেছে মানুষের সুবিধার জন্য নয়, যন্ত্রের সরলতা আর নির্ভরযোগ্যতার জন্য। মানুষের সুবিধার কাজটি — দশমিকে দেখানো — সফটওয়্যার করে দেয়, এই পর্বের রূপান্তরের নিয়মেই।

প্র ০৫সোভিয়েত ইউনিয়নে ১৯৫৮ সালে তিন-ভিত্তির (ternary) কম্পিউটার Setun তৈরি হয়েছিল। বাইনারির বদলে ternary কি জিততে পারত?

মস্কো স্টেট ইউনিভার্সিটিতে প্রকৌশলী Nikolay Brusentsov-এর নেতৃত্বে ১৯৫৮ সালে Setun তৈরি হয়। এটি সাধারণ ternary (0, 1, 2) নয়, ব্যবহার করত “balanced ternary” — অঙ্ক −1, 0, +1. এই পদ্ধতির একটি সুন্দর বৈশিষ্ট্য: ঋণাত্মক সংখ্যার জন্য আলাদা চিহ্ন বা 2's complement-এর কৌশল (পর্ব ১৭) লাগে না, প্রতিটি অঙ্কের চিহ্ন উল্টালেই সংখ্যাটি ঋণাত্মক হয়ে যায়। আর রাউন্ড করা মানে শুধু শেষের অঙ্কগুলো কেটে ফেলা। Setun তুলনামূলক সস্তা আর নির্ভরযোগ্য ছিল; প্রায় ৫০টি তৈরি হয়ে বিভিন্ন বিশ্ববিদ্যালয় ও প্রতিষ্ঠানে ব্যবহৃত হয়। ১৯৭০ সালে উন্নত সংস্করণ Setun-70 আসে, কিন্তু পরে প্রকল্পটি আর এগোয়নি।

তাত্ত্বিকভাবে ternary-র পক্ষে একটি যুক্তিও আছে। একটি সংখ্যা রাখার “খরচ” যদি ধরা হয় (ভিত্তি × অঙ্কের সংখ্যা) — অর্থাৎ প্রতিটি ঘরে কত অবস্থা সামলাতে হয় আর কতগুলো ঘর লাগে — তাহলে সবচেয়ে কম খরচের ভিত্তি গাণিতিক ধ্রুবক e ≈ ২.৭১৮. পূর্ণসংখ্যার মধ্যে e-এর সবচেয়ে কাছে ৩, তাই এই মাপে ternary বাইনারির চেয়ে সামান্য বেশি দক্ষ। একে বলে radix economy.

তবু বাইনারি জিতল কেন? প্রথমত, transistor-এর দুটি অবস্থা — পুরো চালু আর পুরো বন্ধ — সবচেয়ে স্থিতিশীল; তিনটি স্তর নির্ভুলভাবে আলাদা রাখতে হলে ভোল্টেজের মাঝের স্তরটি গোলমাল (noise) আর তাপমাত্রায় সহজে নড়ে যায়। দ্বিতীয়ত, বুলিয়ান লজিক (সত্য/মিথ্যা) স্বভাবতই দুই মানের, তাই গেট (পর্ব ২০) আর সার্কিটের নকশা সরল। তৃতীয়ত — সম্ভবত সবচেয়ে বড় কারণ — ১৯৬০-৭০-এর দশকে integrated circuit-এর কারখানা, সফটওয়্যার, প্রোগ্রামারদের প্রশিক্ষণ, সবকিছু বাইনারির চারপাশে গড়ে ওঠে। এই বিশাল ব্যবস্থাকে বদলাতে যে লাভ দরকার, ternary তা দিতে পারেনি।

মজার ব্যাপার, একাধিক স্তরের ধারণা ফিরে এসেছে অন্য রূপে। আজকের SSD-র flash সেলে প্রায়ই একটি সেলে ৩ বা ৪ bit রাখা হয় — ৮ বা ১৬টি ভোল্টেজ-স্তর দিয়ে (পর্ব ০৪)। আর দ্রুত নেটওয়ার্ক সংযোগে একটি সংকেতে একাধিক bit পাঠাতে চার-স্তরের সংকেত ব্যবহৃত হয়। কিন্তু হিসাব, লজিক আর মেমরির ঠিকানা — সবই এখনো বাইনারিতে।

মূল উপলব্ধি: “তত্ত্বে সবচেয়ে ভালো” আর “বাস্তবে জয়ী” এক জিনিস নয়। নির্ভরযোগ্যতা, সরলতা আর চারপাশের পুরো ব্যবস্থার শক্তি প্রায়ই সামান্য তাত্ত্বিক সুবিধাকে হারিয়ে দেয়।

অনুশীলন

খাতা-কলম নিন। প্রতিটি উত্তর উল্টো দিকে রূপান্তর করে নিজে যাচাই করুন, তারপর “উত্তর” খুলে মেলান।

  1. এক সংখ্যা, তিন ভিত্তি: (100)10-কে ভাগ পদ্ধতিতে বাইনারি, অক্টাল আর হেক্সাডেসিমালে রূপান্তর করুন। তারপর বাইনারি উত্তরকে দল বেঁধে অক্টাল-হেক্সে নিয়ে মিলিয়ে দেখুন।

    বাইনারি: ১০০ ÷ ২ = ৫০ (0), ৫০ ÷ ২ = ২৫ (0), ২৫ ÷ ২ = ১২ (1), ১২ ÷ ২ = ৬ (0), ৬ ÷ ২ = ৩ (0), ৩ ÷ ২ = ১ (1), ১ ÷ ২ = ০ (1). নিচ থেকে ওপরে: (1100100)2; যাচাই ৬৪ + ৩২ + ৪ = ১০০.

    অক্টাল: ১০০ ÷ ৮ = ১২ (4), ১২ ÷ ৮ = ১ (4), ১ ÷ ৮ = ০ (1) → (144)8. হেক্স: ১০০ ÷ ১৬ = ৬ (4), ৬ ÷ ১৬ = ০ (6) → (64)16.

    মিলিয়ে দেখা: 1100100 → ৩টি করে: 001 100 100 = 1 4 4 ✔; ৪টি করে: 0110 0100 = 6 4 ✔. লক্ষ করুন, (64)16 দেখতে দশমিকের ৬৪-এর মতো, কিন্তু মান ১০০ — এ কারণেই ভিত্তি লেখা বাধ্যতামূলক।

  2. হেক্স থেকে দুই দিকে: (3B.8)16-কে (ক) দশমিকে আর (খ) বাইনারিতে রূপান্তর করুন। তারপর বাইনারি উত্তরটিকে দশমিকে নিয়ে (ক)-এর সাথে মেলান।

    (ক) 3×16 + 11×1 + 8×16⁻¹ = ৪৮ + ১১ + ০.৫ = (59.5)10.

    (খ) প্রতিটি অঙ্ক ৪ bit-এ: 3 = 0011, B = 1011, 8 = 1000 → 0011 1011 . 1000. বাঁয়ের আর ডানের অপ্রয়োজনীয় 0 বাদ দিলে (111011.1)2.

    মেলানো: ৩২ + ১৬ + ৮ + ২ + ১ + ০.৫ = ৫৯.৫ ✔. ভগ্নাংশের ডানের 0 বাদ দেওয়া যায় (০.৫০ = ০.৫), কিন্তু মাঝের 0 কখনো নয়।

  3. পৌনঃপুনিক ভগ্নাংশ: (0.3)10-কে বাইনারিতে ছয় অঙ্ক পর্যন্ত রূপান্তর করুন। কোন ধাপে পুনরাবৃত্তি শুরু হলো? ছয় অঙ্কের উত্তরটি দশমিকে কত — আর ০.৩ থেকে কত দূরে?

    ০.৩ × ২ = ০.৬ → 0; ০.৬ × ২ = ১.২ → 1; ০.২ × ২ = ০.৪ → 0; ০.৪ × ২ = ০.৮ → 0; ০.৮ × ২ = ১.৬ → 1; ০.৬ × ২ = ১.২ → 1 — এখানে ০.৬ দ্বিতীয়বার এল, তাই এখান থেকে “1001” ঘুরতে থাকবে। ছয় অঙ্কে: (0.010011)2 (প্রায়)।

    দশমিকে: ০.২৫ + ০.০৩১২৫ + ০.০১৫৬২৫ = ০.২৯৬৮৭৫ — আসল ০.৩ থেকে প্রায় ০.০০৩ কম। আরও অঙ্ক নিলে পার্থক্য কমবে, কিন্তু কখনো শূন্য হবে না। কম্পিউটারের floating-point হিসাবে ঠিক এই ধরনের ক্ষুদ্র ত্রুটিই 0.1 + 0.2-এর অদ্ভুত ফল তৈরি করে।

  4. রঙের হিসাব: (ক) CSS-এর রং #FF8800-এ লাল, সবুজ আর নীলের মান দশমিকে কত? রংটি দেখতে কেমন হবে বলে মনে হয়? (খ) #808080 কোন রং? (গ) ২৪ bit রঙে মোট কতগুলো আলাদা রং সম্ভব?

    (ক) FF = ২৫৫ (লাল পুরো), 88 = ৮×১৬ + ৮ = ১৩৬ (সবুজ মাঝামাঝি), 00 = ০ (নীল নেই)। লাল আর আধা-সবুজ আলো মিলে কমলা রং।

    (খ) 80 = ৮×১৬ = ১২৮ — তিনটি রংই সমান আর মাঝামাঝি, তাই মাঝারি ধূসর (gray). তিনটি মান সমান হলেই রং সাদা-কালো-ধূসরের মধ্যে থাকে: #000000 কালো, #FFFFFF সাদা।

    (গ) ২²⁴ = ১,৬৭,৭৭,২১৬টি — প্রায় এক কোটি সাতষট্টি লাখ রং। ছবির প্রতিটি pixel কীভাবে এই সংখ্যায় রাখা হয়, দেখবেন পর্ব ২৮-এ।

নিজেকে যাচাই করুন

ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।

ক্রমমান অনুযায়ী ছোট থেকে বড় — সাজান (▲▼ চেপে সরান)

  1. (11)₂
  2. (7)₈
  3. (A)₁₆
  4. (1100)₂
  5. (17)₈
  6. (1F)₁₆

হেক্সাডেসিমাল সংখ্যা পদ্ধতির ভিত্তি কত?

  • ২
  • ৮
  • ১৬
  • ১০

(25)10-এর বাইনারি রূপ কোনটি?

  • (10011)2
  • (11001)2
  • (11010)2
  • (10101)2

তিন অঙ্কের সবচেয়ে বড় অক্টাল সংখ্যার দশমিক মান কত?

  • ৯৯৯
  • ৭৭৭
  • ৫১২
  • ৫১১

(1010.1)2-এর দশমিক মান কত?

  • ১০.৫
  • ১০.১
  • ৫.৫
  • ১১

(110101111)2-কে হেক্সাডেসিমালে রূপান্তর করলে কী হয়?

  • (D78)16
  • (1AF)16
  • (657)16
  • (11015)16

২০০টি আলাদা মান (যেমন ২০০ জনের রোল নম্বর) বাইনারিতে রাখতে কমপক্ষে কয়টি bit লাগবে?

  • ৬
  • ৭
  • ৮
  • ২০০

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:

মনে রাখুন

  1. Positional পদ্ধতি: প্রতিটি ঘরের ওজন ভিত্তির ঘাত (b⁰, b¹, … আর বিন্দুর পরে b⁻¹, b⁻²…); ভিত্তি b হলে অঙ্ক 0 থেকে b − 1. লিপি ≠ ভিত্তি।
  2. দশমিক → অন্য ভিত্তি: পূর্ণ অংশ বারবার ভাগ, ভাগশেষ নিচ থেকে ওপরে; ভগ্নাংশ বারবার গুণ, পূর্ণ অংশ ওপর থেকে নিচে। সব ভগ্নাংশ শেষ হয় না — 0.1 বাইনারিতে পৌনঃপুনিক।
  3. অন্য ভিত্তি → দশমিক: অঙ্ক × ওজন, তারপর যোগ।
  4. বাইনারি ↔ অক্টাল = ৩ bit, বাইনারি ↔ হেক্স = ৪ bit; দল বিন্দু থেকে বাইরের দিকে, ঘাটতি 0 দিয়ে। অক্টাল ↔ হেক্স বাইনারির সেতু দিয়ে।
  5. n bit = ২ⁿ মান, সবচেয়ে বড় ২ⁿ − ১; এক byte = দুটি হেক্স অঙ্ক (00–FF) — তাই রং, MAC, মেমরি ঠিকানা আর Unicode সবই হেক্সে। আর প্রতিটি উত্তর উল্টো রূপান্তরে যাচাই করুন।

পরের পর্বে: সংখ্যা লিখতে শিখলেন — এবার হিসাব করার পালা। বাইনারিতে যোগ-বিয়োগ কীভাবে হয়, আর কম্পিউটার ঋণাত্মক সংখ্যা কীভাবে রাখে, যাতে বিয়োগও আসলে যোগ হয়ে যায়: 1's আর 2's complement.

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান