সংখ্যা পদ্ধতি ও রূপান্তর

বাইনারি, ওক্টা ও হেক্সাডেসিম্যাল রূপান্তর

সংখ্যা পদ্ধতি কী এবং কেন গুরুত্বপূর্ণ?

কম্পিউটার শুধুমাত্র 0 ও 1 বোঝে, কিন্তু মানুষ দশমিক পদ্ধতি (1, 2, 3...) ব্যবহার করে। এই দুটির মধ্যে সেতুবন্ধন হলো সংখ্যা পদ্ধতি। কম্পিউটার বিজ্ঞানে চারটি পদ্ধতি সবচেয়ে বেশি ব্যবহৃত: ডেসিমাল, বাইনারি, অক্টাল ও হেক্সাডেসিমাল।


BCS প্রিলিমিনারি ও ব্যাংক নিয়োগ পরীক্ষায় সংখ্যা পদ্ধতি থেকে প্রতি বছর প্রশ্ন আসে। বিশেষত বাইনারি ↔ ডেসিমাল, হেক্স ↔ বাইনারি, অক্টাল ↔ বাইনারি রূপান্তর থেকে বারবার প্রশ্ন আসতে দেখা যায়।


চারটি প্রধান সংখ্যা পদ্ধতি

সংখ্যা পদ্ধতির তুলনা:

  • ডেসিমাল (Decimal) — ভিত্তি 10, অঙ্ক: 0–9। আমাদের দৈনন্দিন পদ্ধতি।
  • বাইনারি (Binary) — ভিত্তি 2, অঙ্ক: 0, 1। কম্পিউটারের মূল ভাষা।
  • অক্টাল (Octal) — ভিত্তি 8, অঙ্ক: 0–7। অঙ্কে 8 বা 9 থাকলে সেটি অক্টাল নয়।
  • হেক্সাডেসিমাল (Hexadecimal) — ভিত্তি 16, অঙ্ক: 0–9, A–F। কোডে 0x দিয়ে লেখা হয়।

হেক্সা-তে A–F এর দশমিক মান:

  • A=10, B=11, C=12, D=13, E=14, F=15
  • একই সংখ্যার চারটি রূপ: (46)₁₀ = (101110)₂ = (56)₈ = (2E)₁₆

বাইনারি থেকে ডেসিমাল রূপান্তর

আমাদের পরিচিত দশমিক পদ্ধতিতে একটি সংখ্যার প্রতিটি ঘর নির্দিষ্ট মান বহন করে — যেমন ৩৪৫ মানে ৩ শত + ৪ দশ + ৫ এক। বাইনারিতে ঠিক একইভাবে কাজ করে, শুধু প্রতিটি ঘরের মান 10-এর গুণিতকের বদলে 2-এর গুণিতক (1, 2, 4, 8, 16, 32...)।


নিয়ম: বাইনারি সংখ্যাটি ডান থেকে বাম দিকে পড়ুন। প্রতিটি 1-এর জায়গায় সেই ঘরের মান যোগ করুন, 0-এর জায়গায় কিছু যোগ হবে না।

উদাহরণ: (101110)₂ = ?

  • প্রতিটি ঘরের মান (ডান থেকে বাম): 1, 2, 4, 8, 16, 32
  • বাইনারি অঙ্ক (ডান থেকে বাম): 0, 1, 1, 1, 0, 1
  • যেখানে 1 আছে সেই ঘরের মান নিন: 2 + 4 + 8 + 32
  • যেখানে 0 আছে (1 ও 16) সেগুলো বাদ দিন
  • ফলাফল: 2 + 4 + 8 + 32 = 46

ঘরের মান মনে রাখার সহজ উপায়:

  • ডান থেকে শুরু করুন: 1 → 2 → 4 → 8 → 16 → 32 → 64 → 128
  • প্রতিটি ঘর আগের ঘরের দ্বিগুণ — এটুকু মনে রাখলেই যথেষ্ট।

ডেসিমাল থেকে বাইনারি রূপান্তর

পদ্ধতিটি সহজ — সংখ্যাটিকে বারবার 2 দিয়ে ভাগ করতে থাকুন যতক্ষণ না ভাগফল 0 হয়। প্রতিবার ভাগ দেওয়ার পর ভাগশেষটি (0 বা 1) লিখে রাখুন। সবশেষে সব ভাগশেষ নিচ থেকে উপরে পড়লেই বাইনারি সংখ্যা পাবেন।


কেন নিচ থেকে উপরে? কারণ প্রথম ভাগশেষটি সবচেয়ে ডানের (ছোট) ঘরের মান, আর শেষেরটি সবচেয়ে বাম (বড়) ঘরের মান।

উদাহরণ: (46)₁₀ → বাইনারি

  • 46 ÷ 2 = 23, ভাগশেষ 0 ← সবচেয়ে ডানের বিট
  • 23 ÷ 2 = 11, ভাগশেষ 1
  • 11 ÷ 2 = 5,  ভাগশেষ 1
  • 5  ÷ 2 = 2,  ভাগশেষ 1
  • 2  ÷ 2 = 1,  ভাগশেষ 0
  • 1  ÷ 2 = 0,  ভাগশেষ 1 ← সবচেয়ে বামের বিট

নিচ থেকে উপরে পড়লে: (101110)₂

ডেসিমাল থেকে অক্টাল রূপান্তর

নিয়ম হুবহু একই, শুধু 2-এর জায়গায় 8 দিয়ে ভাগ করতে হবে। অক্টালে 0 থেকে 7 পর্যন্ত অঙ্ক আছে, তাই প্রতিটি ভাগশেষ 0–7-এর মধ্যেই থাকবে। ভাগফল 0 না হওয়া পর্যন্ত ভাগ দিতে থাকুন, তারপর ভাগশেষগুলো নিচ থেকে উপরে পড়ুন।

উদাহরণ: (55)₁₀ → অক্টাল

  • 55 ÷ 8 = 6, ভাগশেষ 7 ← সবচেয়ে ডানের অঙ্ক
  • 6  ÷ 8 = 0, ভাগশেষ 6 ← সবচেয়ে বামের অঙ্ক
  • ভাগফল 0 হয়ে গেছে, তাই শেষ।

নিচ থেকে উপরে পড়লে: (67)₈

যাচাই: 6 × 8 + 7 = 48 + 7 = 55 ✓

ডেসিমাল থেকে হেক্সাডেসিমাল রূপান্তর

এবার 16 দিয়ে ভাগ করতে হবে। একটু মজার বিষয় হলো, ভাগশেষ যদি 10 বা তার বেশি হয় তাহলে সেটাকে সংখ্যায় লেখা যাবে না — কারণ হেক্সে প্রতিটি ঘর একটিমাত্র অঙ্ক। তাই 10=A, 11=B, 12=C, 13=D, 14=E, 15=F লিখতে হয়।

উদাহরণ: (746)₁₀ → হেক্সাডেসিমাল

  • 746 ÷ 16 = 46, ভাগশেষ 10 → A ← সবচেয়ে ডানের অঙ্ক
  • 46  ÷ 16 = 2,  ভাগশেষ 14 → E
  • 2  ÷ 16 = 0,  ভাগশেষ 2  ← সবচেয়ে বামের অঙ্ক

নিচ থেকে উপরে পড়লে: (2EA)₁₆

যাচাই: 2 × 256 + 14 × 16 + 10 = 512 + 224 + 10 = 746 ✓

বাইনারি ↔ হেক্সাডেসিমাল রূপান্তর

হেক্স ↔ বাইনারি রূপান্তর সবচেয়ে সহজ — ভাগের দরকার নেই। প্রতিটি হেক্স অঙ্ক সরাসরি একটি নির্দিষ্ট 4-বিট বাইনারির সাথে মিলে যায়। নিচের টেবিলটি মুখস্থ করলেই দুই দিকেই মুহূর্তে রূপান্তর করা যাবে।

হেক্স ↔ বাইনারি শর্টকাট টেবিল:

  • 0=0000   1=0001   2=0010   3=0011
  • 4=0100   5=0101   6=0110   7=0111
  • 8=1000   9=1001   A=1010   B=1011
  • C=1100   D=1101   E=1110   F=1111

হেক্স → বাইনারি: (2FA)₁₆ → ?

  • প্রতিটি হেক্স অঙ্ক আলাদাভাবে 4-বিট বাইনারিতে রূপান্তর করুন
  • 2 → 0010,   F → 1111,   A → 1010

পাশাপাশি বসালে: (001011111010)₂

বাইনারি → হেক্স: (001011111010)₂ → ?

  • ডান থেকে ৪ বিটের গ্রুপ করুন (বামে প্রয়োজনে 0 যোগ করুন)
  • 0010 | 1111 | 1010
  • প্রতিটি গ্রুপ হেক্সে: 0010=2,   1111=F,   1010=A

ফলাফল: (2FA)₁₆

উদাহরণ: 0x1234 → বাইনারি

  • 0x উপসর্গ মানে হেক্সাডেসিমাল।
  • 1=0001, 2=0010, 3=0011, 4=0100

ফলাফল: 0001 0010 0011 0100

বাইনারি ↔ অক্টাল রূপান্তর

হেক্সের মতোই — তবে এখানে প্রতিটি অক্টাল অঙ্ক ৩-বিট বাইনারির সাথে মিলে যায়। দুই দিকেই ভাগের দরকার নেই, শুধু গ্রুপ করলেই হয়।

অক্টাল → বাইনারি: (67)₈ → ?

  • প্রতিটি অক্টাল অঙ্ক আলাদাভাবে 3-বিট বাইনারিতে রূপান্তর করুন
  • 6 → 110,   7 → 111

পাশাপাশি বসালে: (110111)₂

যাচাই: 32+16+4+2+1 = 55 = (67)₈ ✓

বাইনারি → অক্টাল: (110111)₂ → ?

  • ডান থেকে ৩ বিটের গ্রুপ করুন (বামে প্রয়োজনে 0 যোগ করুন)
  • 110 | 111
  • প্রতিটি গ্রুপ অক্টালে: 110=6,   111=7

ফলাফল: (67)₈

অক্টাল ↔ হেক্সাডেসিমাল রূপান্তর

হেক্সাডেসিমাল এবং অক্টালের মধ্যে সরাসরি কোনো সহজ সূত্র নেই, কারণ ভিত্তি ১৬ (হেক্স) এবং ৮ (অক্টাল) সরাসরি সম্পর্কিত নয়। তাই রূপান্তরের সবচেয়ে সহজ পদ্ধতি হলো বাইনারিকে মধ্যবর্তী ধাপ হিসেবে ব্যবহার করা।


হেক্স → অক্টাল

  1. প্রতিটি হেক্স অঙ্ককে তার ৪-বিট বাইনারি রূপে রূপান্তর করুন
  2. সবগুলো বাইনারি একসাথে জোড়া লাগান
  3. ডান দিক থেকে ৩-বিট করে দলে ভাগ করুন (প্রয়োজনে বামে শূন্য যোগ করুন)
  4. প্রতিটি ৩-বিট দলকে অক্টাল অঙ্কে রূপান্তর করুন

উদাহরণ: (2FA)₁₆ → অক্টাল

  • 2=0010, F=1111, A=1010 → পাশাপাশি: 001011111010
  • ৩-বিট করে ভাগ: 001 | 011 | 111 | 010
  • অক্টাল: 1 | 3 | 7 | 2 → (1372)₈

অক্টাল → হেক্স (উল্টো পদ্ধতি)

  1. প্রতিটি অক্টাল অঙ্ককে তার ৩-বিট বাইনারি রূপে রূপান্তর করুন
  2. বাইনারি জোড়া লাগান
  3. ডান দিক থেকে ৪-বিট করে দলে ভাগ করুন (প্রয়োজনে বামে শূন্য যোগ করুন)
  4. প্রতিটি ৪-বিট দলকে হেক্স অঙ্কে রূপান্তর করুন

উদাহরণ: (1372)₈ → হেক্স (আগের উদাহরণের বিপরীত, যাচাইয়ের জন্য)

  • 1=001, 3=011, 7=111, 2=010 → পাশাপাশি: 001011111010
  • ৪-বিট করে ভাগ: 0010 | 1111 | 1010
  • হেক্স: 2 | F | A → (2FA)₁₆ ✓ (মূল সংখ্যায় ফেরত এসেছে)

পরীক্ষায় আসা গুরুত্বপূর্ণ তথ্য

এগুলো সরাসরি পরীক্ষায় আসে — মনে রাখুন:

  1. 1 Nibble = 4 bit  |  1 Byte = 8 bit  |  1 Word = 16 bit  |  1 Double Word = 32 bit
  2. ASCII = 7 বিট → 2⁷ = 128 চিহ্ন (Extended ASCII = 8 বিট = 256 চিহ্ন)
  3. Unicode = 16 বিট → 2¹⁶ = 65,536 টি চিহ্ন (৩৭তম BCS-এ সরাসরি এসেছে)
  4. 2 KB মেমোরি address করতে: 2KB = 2 × 2¹⁰ = 2¹¹ → 11টি address line দরকার
  5. n বিটে মোট সংখ্যা = 2ⁿ, সর্বোচ্চ মান = 2ⁿ − 1

বিগত পরীক্ষায় আসা প্রশ্ন

BCS প্রিলিমিনারি পরীক্ষায় সংখ্যা পদ্ধতি থেকে আসা প্রশ্নগুলো:

অনুশীলন সমস্যা

  1. (11001010)₂ কে ডেসিমালে রূপান্তর করুন।
  2. ডেসিমাল 200 কে বাইনারি ও হেক্সাডেসিমালে রূপান্তর করুন।
  3. (ABC)₁₆ কে বাইনারিতে রূপান্তর করুন, তারপর অক্টালে রূপান্তর করুন।
  4. 16 KB মেমোরি address করতে কতটি address line দরকার?

মূল বিষয়: রূপান্তর নিয়মগুলো একবার বুঝলেই যথেষ্ট — হেক্স ↔ বাইনারি (৪ বিটের গ্রুপ), অক্টাল ↔ বাইনারি (৩ বিটের গ্রুপ), ডেসিমাল ↔ অন্যান্য (ভাগের পদ্ধতি)।