Adder (Half & Full)
অ্যাডার
অ্যাডার (Adder)
ভূমিকা — যোগই সব হিসাবের মূল
Calculator-এ 7 + 5 চাপলে উত্তর আসে 12। কিন্তু CPU-র ভেতরে কোনো "যোগ করার মানুষ" নেই — আছে কয়েকটা logic gate-এর জোড়া লাগানো সার্কিট: Adder। মজার ব্যাপার — কম্পিউটার বিয়োগ, গুণ, ভাগ সবই করে এই Adder দিয়েই (2's complement আর বারবার যোগের কৌশলে)। তাই বলা হয়: যে সার্কিট যোগ করতে পারে, সে সব হিসাবই করতে পারে।
💡 মজার তথ্য: তোমার ফোনের প্রসেসরে কোটি কোটি adder circuit আছে, প্রতিটি সেকেন্ডে শত কোটি বার যোগ করছে!
Adder কেন দরকার?
ALU (Arithmetic Logic Unit) — CPU-র হিসাবের অংশ — এর মূল ভিত্তিই Adder:
- যোগ → সরাসরি Adder
- বিয়োগ → 2's complement বানিয়ে Adder দিয়ে যোগ
- গুণ → বারবার যোগ
- ভাগ → বারবার বিয়োগ
অর্থাৎ Adder ছাড়া কম্পিউটারের গণিত অসম্ভব। Adder একটি Combinational Circuit — আউটপুট শুধু বর্তমান ইনপুটের উপর নির্ভর করে, আগের অবস্থা মনে রাখে না।
চিত্রের মাধ্যমে বোঝো
Binary যোগের নিয়ম মনে করো:
0+0 = 0
0+1 = 1
1+0 = 1
1+1 = 10 ◄── এখানেই ঝামেলা! ফল 0, হাতে থাকে (carry) 1
দুটি আউটপুট লাগবে:
Sum (S) = যোগফল বিট
Carry (C) = হাতের বিট
Module 1: Half Adder — অর্ধেক যোগ
📌 সংজ্ঞা: যে সমবায় সার্কিট দুটি বিট যোগ করে Sum ও Carry আউটপুট দেয়, তাকে Half Adder বলে।
Truth Table:
| A | B | Sum | Carry |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
Truth Table থেকে Boolean Expression বের করো:
- Sum কলামটা দেখো — A আর B ভিন্ন হলেই 1। এটা কোন gate-এর আচরণ? XOR!
- Carry কলামটা দেখো — দুটোই 1 হলে 1। এটা AND!
Sum = A ⊕ B (A XOR B)
Carry = A · B (A AND B)
সার্কিট:
A ──┬──────► XOR ──► Sum
│ ┌──►
B ──┼────┤
│ └──► AND ──► Carry
└──────►
প্রয়োজনীয় Gate: ১টি XOR + ১টি AND = মোট ২টি gate।
সীমাবদ্ধতা (নামে "Half" কেন?): আগের ধাপ থেকে আসা carry নিতে পারে না। একাধিক বিটের সংখ্যা যোগ করতে গেলে আগের কলামের carry যোগ করতেই হয় — Half Adder তা পারে না। তাই সে "অর্ধেক"।
Module 2: Full Adder — পূর্ণাঙ্গ যোগ
📌 সংজ্ঞা: যে সমবায় সার্কিট তিনটি বিট (A, B এবং আগের ধাপের Carry-in) যোগ করে Sum ও Carry-out দেয়, তাকে Full Adder বলে।
Truth Table:
| A | B | Cin | Sum | Cout |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
Pattern লক্ষ করো:
- Sum = 1 হয় যখন বিজোড় সংখ্যক ইনপুট 1 (1টি বা 3টি)
- Cout = 1 হয় যখন কমপক্ষে ২টি ইনপুট 1
Sum = A ⊕ B ⊕ Cin
Cout = A·B + Cin·(A ⊕ B)
গঠন: ২টি Half Adder + ১টি OR gate দিয়ে একটি Full Adder তৈরি হয়:
A ──►┌──────────┐ S₁
B ──►│ Half Add │────►┌──────────┐ Sum
│ │ C₁ │ Half Add │────────►
└──────────┘ │ │ │ C₂
Cin ──────────────►└──└──────────┘──► OR ──► Cout
│ ▲
└──────────────────┘
Module 3: হাতে-কলমে যাচাই
উদাহরণ: A=1, B=1, Cin=1
- Sum = 1 ⊕ 1 ⊕ 1 = 0 ⊕ 1 = 1
- Cout = 1·1 + 1·(1⊕1) = 1 + 0 = 1
- অর্থাৎ 1+1+1 = 11₂ (দশমিক 3) → Sum=1, Carry=1 ✓
Multi-bit যোগ (Ripple Carry Adder): 4-bit সংখ্যা যোগ করতে ৪টি Full Adder পাশাপাশি বসাও — প্রতিটির Cout পরেরটির Cin-এ যায়। carry ঢেউয়ের মতো এগোয় বলে নাম "ripple carry"।
বাস্তব জীবনের সাথে মিল
🏠 অ্যানালজি: হাতে যোগ করার কথা ভাবো: ৪৭ + ৩৮। এককের ঘরে ৭+৮=১৫ → লেখো ৫, হাতে ১। দশকের ঘরে ৪+৩+হাতের ১=৮। এই "হাতের ১" নেওয়ার ক্ষমতাই Half Adder-এ নেই, Full Adder-এ আছে।
Half Adder vs Full Adder তুলনা
| বৈশিষ্ট্য | Half Adder | Full Adder |
|---|---|---|
| ইনপুট | ২টি (A, B) | ৩টি (A, B, Cin) |
| আউটপুট | ২টি (S, C) | ২টি (S, Cout) |
| Sum | A ⊕ B | A ⊕ B ⊕ Cin |
| Carry | A·B | A·B + Cin·(A⊕B) |
| Carry গ্রহণ | পারে না | পারে |
| গঠন | 1 XOR + 1 AND | 2 Half Adder + 1 OR |
🧠 মূল শিক্ষা
- Adder = logic gate দিয়ে তৈরি যোগের সার্কিট; ALU-র প্রাণ
- Half Adder: 2 ইনপুট, Sum = A⊕B, Carry = A·B
- Full Adder: 3 ইনপুট (carry-in সহ), Sum = A⊕B⊕Cin
- ২টি Half Adder + ১টি OR = ১টি Full Adder
- কম্পিউটার বিয়োগ/গুণ/ভাগ সবই করে Adder দিয়ে
🔁 নিজে পরীক্ষা করো
- Half Adder-এ A=1, B=0 → Sum? Carry? → Sum=1, Carry=0
- Full Adder-এ A=0, B=1, Cin=1 → Sum? Cout? → Sum=0, Cout=1
- ৮-bit সংখ্যা যোগে কয়টি Full Adder লাগবে? → ৮টি (বা ৭ Full + ১ Half)
📝 HSC পরীক্ষার প্রস্তুতি
পরীক্ষায় যা আসতে পারে:
- Half/Full Adder-এর Truth Table ও Boolean Expression — প্রায় প্রতি বছর আসে
- উদ্দীপকে সার্কিট দিয়ে "চিত্রের সার্কিটটি কী?" — XOR+AND দেখলেই Half Adder
- Full Adder-এ নির্দিষ্ট ইনপুটে আউটপুট নির্ণয়
- Half Adder দিয়ে Full Adder বাস্তবায়ন (সৃজনশীল গ)
সাধারণ ভুল:
- ❌ Sum-এ OR ব্যবহার করা (হবে XOR — 1+1-এ Sum 0, OR দিলে 1 হয়ে যেত)
- ❌ Full Adder-এর ইনপুট ২টি ভাবা (৩টি!)
- ❌ Cout = A·B·Cin লেখা (সঠিক: A·B + Cin·(A⊕B))
✅ সারাংশ
- Half Adder: ২ বিট যোগ, carry নেয় না — XOR (Sum) + AND (Carry)
- Full Adder: ৩ বিট যোগ (carry-in সহ) — বহু-বিট যোগের ভিত্তি
- একের পর এক Full Adder জুড়লে Ripple Carry Adder — CPU এভাবেই যোগ করে
🎯 অনুশীলন প্রশ্ন
- Half Adder-এর Truth Table আঁকো এবং Sum ও Carry-র Boolean Expression বের করো।
- ২টি Half Adder দিয়ে Full Adder-এর ব্লক চিত্র আঁকো।
- A=1, B=1, Cin=0 হলে Full Adder-এর আউটপুট নির্ণয় করো।
- Half Adder-কে "অর্ধেক" বলা হয় কেন — ব্যাখ্যা করো।
- 1011 + 0110 যোগে প্রতি ধাপে কোন Adder কী আউটপুট দেবে দেখাও।