Binary Arithmetic
বাইনারি গাণিতিক
বাইনারি গাণিতিক (Binary Arithmetic)
ভূমিকা — Computer কখনো বিয়োগ করে না!
তুমি যখন Calculator-এ 10 - 7 = 3 লেখো, তখন ভাবো Computer বিয়োগ করছে।
কিন্তু আসলে Computer বিয়োগ করে না। সে শুধু যোগ করে।
10 - 7 কে Computer করে 10 + (-7)। আর ঋণাত্মক সংখ্যা তৈরির জন্য ব্যবহার করে Complement পদ্ধতি।
মজার তথ্য: আলাদা subtraction circuit তৈরি করা ব্যয়বহুল ও জটিল। শুধু addition circuit দিয়ে complement ব্যবহার করলে বিয়োগও করা যায়। এটাই Hardware Design-এর একটি মার্জিত সমাধান।
Binary Arithmetic কেন দরকার?
Computer-এ সমস্ত Mathematical operation শেষ পর্যন্ত Binary-তে হয়। Addition, Subtraction, Multiplication, Division — সব।
এই অধ্যায়ে আমরা শিখবো:
- Binary Addition (যোগ)
- 1's Complement (বিট উল্টানো)
- 2's Complement (ঋণাত্মক সংখ্যার প্রকাশ)
- Binary Subtraction (2's Complement ব্যবহার করে)
চিত্রের মাধ্যমে বোঝো
Binary Addition Column:
1 0 1 1 (11 Decimal)
+ 0 1 1 0 + (6 Decimal)
---------
1 0 0 0 1 = 17 Decimal
Carry: 1 1 1 0
বাস্তব জীবনের সাথে মিল
উপমা: ঘড়ির 12-hour system। 11 টার পর 1 ঘণ্টা গেলে 12 → carry → আবার 12 (overflow)। Binary-তেও তাই — নির্দিষ্ট bit-এর বাইরে গেলে overflow হয়।
Module 1: Binary Addition — বাইনারি যোগ
যোগের নিয়মাবলি
0 + 0 = 0 (sum=0, carry=0)
0 + 1 = 1 (sum=1, carry=0)
1 + 0 = 1 (sum=1, carry=0)
1 + 1 = 10 (sum=0, carry=1)
1 + 1 + 1 = 11 (sum=1, carry=1) ← তিনটি যোগ হলে
উদাহরণ ১: 1010 + 0110
Carry: 1 1 0 0
First: 1 0 1 0 (= 10 Decimal)
+ Second: 0 1 1 0 (= 6 Decimal)
---------
Result: 1 0 0 0 0 (= 16 Decimal)
Step by step (ডান থেকে):
Position 0: 0+0 = 0, carry=0
Position 1: 1+1 = 10, sum=0, carry=1
Position 2: 0+1+carry(1) = 10, sum=0, carry=1
Position 3: 1+0+carry(1) = 10, sum=0, carry=1
Position 4: carry(1) → 1
ফলাফল: 10000₂ = 16₁₀ ✅
উদাহরণ ২: 11011 + 01101
Carry: 1 1 0 1 0
First: 1 1 0 1 1 (= 27)
+ Second: 0 1 1 0 1 (= 13)
---------
Result: 1 0 1 0 0 0 (= 40)
যাচাই: 27+13 = 40 ✅
💡 Tip: যোগের সময় carry সবসময় পরের (বাম) ঘরে যায়।
Module 2: 1's Complement — এক এর পরিপূরক
📌 সংজ্ঞা
1's Complement হলো একটি Binary সংখ্যার প্রতিটি bit উল্টানো — প্রতিটি 0 → 1 এবং প্রতিটি 1 → 0।
সংখ্যা: 1 0 1 1 0 1 0 0
1's Complement: 0 1 0 0 1 0 1 1
হিসাব করার নিয়ম
প্রতিটি bit পরিবর্তন করো:
1010 → 0101
1100 → 0011
11001100 → 00110011
1's Complement দিয়ে বিয়োগ
পদ্ধতি: A - B = A + (1's complement of B)
যদি result-এ extra carry আসে, তাকে End-Around Carry বলে, এবং সেটা LSB-এ যোগ করতে হয়।
Decimal: 7 - 5 = 2
Binary: 0111 - 0101
ধাপ ১: 5 এর 1's complement = 0101 → 1010
ধাপ ২: 0111 + 1010 = 10001 (extra carry=1)
ধাপ ৩: End-around carry যোগ: 0001 + 1 = 0010
ফলাফল: 0010₂ = 2₁₀ ✅
⚠️ সতর্কতা: 1's Complement-এ দুটি শূন্য সমস্যা আছে: +0 (0000) এবং -0 (1111)। এই কারণে 2's Complement বেশি ব্যবহার হয়।
Module 3: 2's Complement — দুই এর পরিপূরক
📌 সংজ্ঞা
2's Complement = 1's Complement + 1
অথবা: ডান থেকে প্রথম 1 এবং তার ডানের সব 0 অপরিবর্তিত রাখো, বাকি সব bit উল্টাও।
পদ্ধতি ১: Flip then Add 1
সংখ্যা: 1010
ধাপ ১: 1's Complement → 0101
ধাপ ২: +1 → 0110
2's Complement of 1010 = 0110
পদ্ধতি ২: Shortcut (ডান থেকে)
সংখ্যা: 1 0 1 1 0 0
ডান থেকে প্রথম 1 খুঁজো: position 2 (value 1 0 0)
সেই 1 এবং তার ডানের সব 0 অপরিবর্তিত: ...1 0 0
বাকি সব উল্টাও: 0 1 0...
Original: 1 0 1 1 0 0
2's Complement: 0 1 0 1 0 0
n-bit 2's Complement-এর Range
n-bit signed integer:
- সর্বোচ্চ ধনাত্মক: 2^(n-1) - 1
- সর্বনিম্ন ঋণাত্মক: -2^(n-1)
4-bit: -8 to +7 (MSB=1 হলে ঋণাত্মক)
8-bit: -128 to +127
16-bit: -32768 to +32767
Signed Number Interpretation
8-bit 2's Complement-এ:
01111111 = +127 (MSB=0 → ধনাত্মক)
00000001 = +1
00000000 = 0
11111111 = -1 (MSB=1 → ঋণাত্মক, 2's complement নাও: 00000001 = 1, তাই -1)
10000000 = -128
Module 4: 2's Complement দিয়ে বিয়োগ
পদ্ধতি
A - B = A + (2's complement of B)
ফলাফল পড়ার নিয়ম:
- যদি extra carry আসে → ধনাত্মক ফলাফল, carry বাদ দাও
- যদি carry না আসে → ঋণাত্মক ফলাফল, result-এর 2's complement নাও
উদাহরণ ১: 1010 - 0110 (ধনাত্মক ফলাফল)
A = 1010 (= 10 Decimal)
B = 0110 (= 6 Decimal)
ধাপ ১: B এর 2's complement:
0110 → 1's complement → 1001 → +1 → 1010
ধাপ ২: A + 2's complement of B:
1010
+ 1010
------
10100 ← Extra carry আছে!
ধাপ ৩: Extra carry বাদ দাও: 0100
ফলাফল: 0100₂ = 4₁₀
যাচাই: 10 - 6 = 4 ✅
উদাহরণ ২: 0110 - 1010 (ঋণাত্মক ফলাফল)
A = 0110 (= 6 Decimal)
B = 1010 (= 10 Decimal)
ধাপ ১: B এর 2's complement:
1010 → 0101 → +1 → 0110
ধাপ ২: A + 2's complement of B:
0110
+ 0110
------
1100 ← Carry নেই!
ধাপ ৩: Result ঋণাত্মক, 2's complement নাও:
1100 → 0011 → +1 → 0100
তাই ফলাফল = -0100₂ = -4₁₀
যাচাই: 6 - 10 = -4 ✅
উদাহরণ ৩: পূর্ণ ধাপ দেখানো — 11010 - 01101
A = 11010 (= 26 Decimal)
B = 01101 (= 13 Decimal)
B এর 2's complement:
01101 → 10010 → +1 → 10011
যোগ:
11010
+ 10011
-------
101101 ← Carry আছে
Carry বাদ: 01101₂ = 13₁₀
যাচাই: 26 - 13 = 13 ✅
Module 5: Binary Multiplication — বাইনারি গুণ
গুণের নিয়মাবলি
0 × 0 = 0
0 × 1 = 0
1 × 0 = 0
1 × 1 = 1
Shift-and-Add পদ্ধতি
1011 × 101 (= 11 × 5 = 55)
1011
× 101
------
1011 ← 1011 × 1 (LSB=1)
0000 ← 1011 × 0 (shifted left 1)
1011 ← 1011 × 1 (shifted left 2)
--------
110111 = 55₁₀ ✅
Module 6: বাস্তব প্রয়োগ
- 🖥️ CPU ALU: সমস্ত arithmetic operation করে (ADD, SUB instruction-এ 2's complement ব্যবহার)
- 💾 Signed Integer Storage: C/C++ int, Java int — সব 2's complement-এ
- 🎮 Game Physics: Negative velocity, position — 2's complement signed numbers
- 🔌 Digital Signal Processing: Audio filters, image processing-এ Binary arithmetic
🧠 মূল শিক্ষা
মনে রাখো: Computer বিয়োগ করার জন্য আলাদা circuit ব্যবহার করে না। A - B = A + 2's complement of B — এই একটি সূত্রই যথেষ্ট। 2's Complement-এ MSB=1 মানে ঋণাত্মক সংখ্যা। n-bit-এ সর্বনিম্ন = -2^(n-1), সর্বোচ্চ = 2^(n-1)-1।
🔁 নিজে পরীক্ষা করো
❓ প্রশ্ন ১: Binary Addition-এ 1+1 = কত?
✅ উত্তর: 10 (sum=0, carry=1)
❓ প্রশ্ন ২: 1010 এর 1's Complement কত?
✅ উত্তর: 0101
❓ প্রশ্ন ৩: 1010 এর 2's Complement কত?
✅ উত্তর: 0110 (1's complement 0101 + 1 = 0110)
❓ প্রশ্ন ৪: 4-bit 2's Complement-এ সর্বনিম্ন মান কত?
✅ উত্তর: -8 (= -2³)
❓ প্রশ্ন ৫: 2's Complement বিয়োগের ফলে extra carry না এলে ফলাফল কী ধরনের?
✅ উত্তর: ঋণাত্মক — result-এর 2's complement নিতে হবে
📝 HSC পরীক্ষার প্রস্তুতি
পরীক্ষায় যা আসতে পারে
🎯 সবচেয়ে Common: "2's Complement পদ্ধতিতে Binary বিয়োগ করো" — ধাপে ধাপে দেখাতে হবে।
🎯 Complement calculation: "নিচের সংখ্যার 1's Complement এবং 2's Complement বের করো।"
🎯 Binary Addition: Column format-এ carry সহ দেখানো।
সাধারণ ভুলসমূহ
⚠️ ভুল ১: 2's Complement-এ 1 যোগ করতে ভুলে যাওয়া।
⚠️ ভুল ২: Extra carry এলে ignore না করে যোগ করার চেষ্টা।
⚠️ ভুল ৩: ঋণাত্মক ফলাফলের ক্ষেত্রে 2's complement না নিয়ে সরাসরি result লেখা।
⚠️ ভুল ৪: Binary Addition-এ 1+1+1=11 (sum=1, carry=1) না জানা।
মনে রাখার কৌশল
💡 Step মনে রাখো:
- Subtrahend (B)-এর 2's complement বের করো
- A + 2's complement(B) যোগ করো
- Carry আছে → ধনাত্মক, carry বাদ দাও
- Carry নেই → ঋণাত্মক, result-এর 2's complement নাও
✅ সারাংশ
Binary Addition:
- 1+1 = 10 (carry), 1+1+1 = 11 (carry+1)
- Column format-এ carry সহ লিখতে হয়
1's Complement:
- প্রতিটি bit উল্টাও (0→1, 1→0)
- বিয়োগে End-around carry ব্যবহার হয়
2's Complement:
- 1's Complement + 1
- Shortcut: ডান থেকে প্রথম 1 পর্যন্ত অপরিবর্তিত, বাকি উল্টাও
- n-bit range: -2^(n-1) to +2^(n-1)-1
2's Complement Subtraction:
- A - B = A + 2's complement(B)
- Carry → ধনাত্মক (carry বাদ)
- No carry → ঋণাত্মক (2's complement নাও)
🎯 অনুশীলন প্রশ্ন
-
Addition:
- 1101₂ + 0111₂ = ?
- 11010₂ + 10110₂ = ?
-
Complement:
- 10110 এর 1's complement কত?
- 10110 এর 2's complement কত?
-
Subtraction (2's Complement পদ্ধতিতে):
- 1011 - 0101 = ?
- 0101 - 1010 = ?
-
MCQ: 8-bit 2's Complement-এ সর্বোচ্চ ধনাত্মক মান কত?
- (a) 128 (b) 127 (c) 255 (d) 256 উত্তর: (b) 127
-
প্রমাণ: দেখাও যে Binary Subtraction 2's Complement দিয়ে করা যায়: 15 - 7 = 8।