২-এর পরিপূরক ও ডিজিটাল বর্তনীতে এর গুরুত্ব
এইচএসসি আইসিটি অধ্যায় ৩: ২-এর পরিপূরক বা 2s Complement নির্ণয়ের পদ্ধতি, এর গুরুত্ব এবং যোগের মাধ্যমে বিয়োগ করার বিস্তারিত গাণিতিক নিয়ম। পরীক্ষার জন্য অত্যন্ত গু
২-এর পরিপূরক ও ডিজিটাল বর্তনীতে এর গুরুত্ব
- ২-এর পরিপূরক ও ডিজিটাল বর্তনীতে এর গুরুত্ব
- কম্পিউটার কি বিয়োগ করতে পারে?
- ২-এর পরিপূরক নির্ণয়ের ধাপ
- উদাহরণ: +৫ এর ২-এর পরিপূরক (অর্থাৎ -৫)
- ম্যাজিক ট্রিক / শর্টকাট পদ্ধতি
- কেন ২-এর পরিপূরক পদ্ধতি শ্রেষ্ঠ?
- ২-এর পরিপূরক পদ্ধতিতে যোগ ও বিয়োগ
- উদাহরণ ১: +২৫ থেকে +১২ বিয়োগ
- উদাহরণ ২: +১২ থেকে +২৫ বিয়োগ
- উদাহরণ ৩: -১২ এবং -২৫ এর যোগফল
- ওভারফ্লো (Overflow) কী?
- সারাংশ ও বাড়ির কাজ
২-এর পরিপূরক ও ডিজিটাল বর্তনীতে এর গুরুত্ব
কম্পিউটার বা ডিজিটাল ডিভাইস শুধুমাত্র ০ এবং ১ বুঝতে পারে, তাই সাধারণ গণিতের মতো '-' (মাইনাস) চিহ্ন ব্যবহার করার কোনো সুযোগ হার্ডওয়্যারে নেই। তাহলে কম্পিউটার কীভাবে বোঝে কোনো সংখ্যা ধনাত্মক নাকি ঋণাত্মক? এই প্রশ্নের উত্তর দিয়েই আমাদের আজকের আলোচনা শুরু।
আধুনিক কম্পিউটারে বিয়োগের কাজ সরাসরি করা হয় না। বরং বিয়োগকে যোগের মাধ্যমে সম্পন্ন করা হয়। যেমন: $A - B$ কে কম্পিউটার $A + (-B)$ হিসেবে গণনা করে। এই ঋণাত্মক সংখ্যা প্রকাশের আধুনিক ও সবচেয়ে গ্রহণযোগ্য পদ্ধতি হলো ২-এর পরিপূরক (2's Complement)। আজকের পাঠে আমরা এর পেছনের বিজ্ঞান, 'চিহ্নযুক্ত সংখ্যা' বা Signed Number-এর ধারণা এবং ২-এর পরিপূরক পদ্ধতির খুঁটিনাটি জানব যা পরীক্ষার সৃজনশীল প্রশ্নের উত্তরের জন্য অপরিহার্য।
চিহ্নযুক্ত সংখ্যা (Signed Number) ও ২-এর পরিপূরকের ধারণা
স্বাভাবিক বাইনারি সংখ্যায় (যেমন: ১০১১০) কোনো চিহ্ন থাকে না, এগুলো সব ধনাত্মক। কিন্তু গাণিতিক কাজের জন্য ধনাত্মক ও ঋণাত্মক উভয় প্রকার সংখ্যার প্রয়োজন হয়। বাইনারি পদ্ধতিতে সংখ্যার আগে প্লাস (+) বা মাইনাস (-) চিহ্ন ব্যবহার করা যায় না। তাই সংখ্যার ধনাত্মক বা ঋণাত্মক অবস্থা বোঝানোর জন্য সংখ্যার সর্ববামে একটি অতিরিক্ত বিট ব্যবহার করা হয়।
সংজ্ঞা (Signed Number): বাইনারি পদ্ধতিতে সংখ্যার মান বোঝানোর জন্য ব্যবহৃত বিটগুলোর সর্ববামে যে অতিরিক্ত একটি বিট (০ বা ১) ব্যবহার করা হয়, তাকে চিহ্ন বিট বা Sign Bit বলে। চিহ্ন বিটসহ সংখ্যাকে চিহ্নযুক্ত সংখ্যা বা Signed Number বলা হয়।
একটি ৮-বিট রেজিস্টারে:
- সর্ববামের বিট (৮ম বিট): সাইন বিট (Sign Bit)।
- ০ হলে সংখ্যাটি ধনাত্মক (+)।
- ১ হলে সংখ্যাটি ঋণাত্মক (-)।
- বাকি ৭টি বিট: সংখ্যার মান (Magnitude) বা ডেটা বিট।
চিহ্নযুক্ত সংখ্যা প্রকাশের তিনটি পদ্ধতি রয়েছে:
১. প্রকৃত মান গঠন (Sign-Magnitude Form): সাইন বিট বাদে বাকি বিটগুলোতে সংখ্যার সরাসরি বাইনারি মান বসে।
২. ১-এর পরিপূরক (1's Complement): ঋণাত্মক সংখ্যার জন্য সব বিট উল্টে দেওয়া হয় (০ কে ১, ১ কে ০)।
৩. ২-এর পরিপূরক (2's Complement): ১-এর পরিপূরকের সাথে ১ যোগ করা হয়। এটিই বর্তমানে সব কম্পিউটারে ব্যবহৃত হয়।
গুরুত্বপূর্ণ (Important):
কম্পিউটারে ঋণাত্মক সংখ্যা সংরক্ষণ করার জন্যই মূলত ২-এর পরিপূরক পদ্ধতি ব্যবহার করা হয়। ধনাত্মক সংখ্যার ক্ষেত্রে ২-এর পরিপূরক করার প্রয়োজন নেই; তাদের বাইনারি মানই যথেষ্ট।
২-এর পরিপূরক নির্ণয়ের পদ্ধতি ও রেঞ্জ
২-এর পরিপূরক মান বের করা খুব সহজ। নিচের ধাপগুলো অনুসরণ করো:
উদাহরণ: -৫ এর ২-এর পরিপূরক নির্ণয় (৮-বিট রেজিস্টারে)
- +৫ এর বাইনারি:
00000101 - ১-এর পরিপূরক:
11111010(বিটগুলো উল্টে দেওয়া হলো) - ১ যোগ:
11111010 + 1 = 11111011
সুতরাং, -৫ এর ২-এর পরিপূরক মান হলো11111011।
MCQ শর্টকাট (Shortcut): ডানদিক থেকে প্রথম '১' পাওয়া পর্যন্ত বিটগুলো যেমন আছে তেমনই রাখবে। এরপর বামদিকের বাকি সব বিট উল্টে দেবে।
উদাহরণ: 00000100 (+4)
ডানদিক থেকে প্রথম ১ পর্যন্ত: ...100 (ঠিক থাকবে)
বাকি বামের অংশ উল্টে যাবে: 11111...
রেজাল্ট: 11111100 (-4)
সংখ্যার রেঞ্জ বা সীমা (Number Range)
n-বিট রেজিস্টারে ২-এর পরিপূরক পদ্ধতিতে কত থেকে কত পর্যন্ত সংখ্যা লেখা যায়, তা জানা জরুরি।
$$Range = -(2^{n-1}) \text{ থেকে } +(2^{n-1} - 1)$$
যেখানে $n$ হলো বিট সংখ্যা।
- ৮-বিট রেজিস্টার: $-2^{8-1}$ থেকে $+2^{8-1}-1$ = -১২৮ থেকে +১২৭
- ১৬-বিট রেজিস্টার: $-2^{15}$ থেকে $+2^{15}-1$ = -৩২৭৬৮ থেকে +৩২৭৬৭
২-এর পরিপূরকের গুরুত্ব ও ১-এর পরিপূরকের সাথে তুলনা
কেন আমরা ১-এর পরিপূরক বা Sign-Magnitude ব্যবহার না করে ২-এর পরিপূরক ব্যবহার করি?
- অদ্বিতীয় শূন্য (Unique Zero): ১-এর পরিপূরক পদ্ধতিতে
+0(00000000) এবং-0(11111111) এর জন্য আলাদা দুটি মান থাকে, যা গাণিতিকভাবে ভুল। কিন্তু ২-এর পরিপূরক পদ্ধতিতে শূন্যের মান একটাই (00000000)। - সরল বর্তনী (Circuit Simplicity): ২-এর পরিপূরক পদ্ধতিতে যোগ এবং বিয়োগের জন্য একই বর্তনী (Adder Circuit) ব্যবহার করা যায়। বিয়োগের জন্য আলাদা কোনো সাবট্রাক্টর সার্কিটের প্রয়োজন হয় না, যা কম্পিউটারের খরচ ও জটিলতা কমায়।
- গতি: গাণিতিক অপারেশন দ্রুত সম্পন্ন হয়।
| বৈশিষ্ট্য | ১-এর পরিপূরক | ২-এর পরিপূরক |
|---|---|---|
| শূন্যের মান | দুটি (+0, -0) | একটি (শুধু 0) |
| জটিলতা | কিছুটা জটিল | সহজ ও আধুনিক |
| ব্যবহার | বর্তমানে কম ব্যবহৃত হয় | সব আধুনিক কম্পিউটারে ব্যবহৃত হয় |
২-এর পরিপূরক পদ্ধতিতে যোগ ও বিয়োগ (Worked Examples)
পরীক্ষায় প্রায়ই "২-এর পরিপূরক পদ্ধতিতে যোগ/বিয়োগ করো" এমন প্রশ্ন আসে। মনে রাখবে, বিয়োগের সময় $A - B$ কে $A + (-B)$ আকারে সাজিয়ে নিতে হবে। অর্থাৎ, যার আগে বিয়োগ চিহ্ন আছে, শুধু তাকে ২-এর পরিপূরক করে যোগ করতে হবে।
কেস ১: একটি ধনাত্মক ও একটি ঋণাত্মক সংখ্যা (বড়টি ধনাত্মক)
প্রশ্ন: ২-এর পরিপূরক পদ্ধতিতে $+২২$ এবং $-১৩$ যোগ করো।
সমাধান:
১. $+২২$ এর ৮-বিট বাইনারি: 00010110
২. $-১৩$ এর জন্য প্রথমে $+১৩$ বের করি: 00001101
৩. $-১৩$ (২-এর পরিপূরক): 11110010 + 1 = 11110011
এখন যোগ করি:
+22 -> 00010110
-13 -> 11110011
-------------------
+9 -> 100001001
^
(ক্যারি বিট)
ব্যাখ্যা: এখানে যোগফলের ৯ম বিটটি হলো ক্যারি বিট (Carry Bit)। ৮-বিট রেজিস্টারে এই অতিরিক্ত বিট রাখার জায়গা নেই, তাই এটি বাদ দেওয়া হয়। ফলাফল: 00001001 যা ডেসিমেল +9 এর সমান।
কেস ২: দুটি ঋণাত্মক সংখ্যা
প্রশ্ন: $-৫$ এবং $-৬$ যোগ করো।
সমাধান:
১. $-৫$ এর ২-এর পরিপূরক: 11111011
২. $-৬$ এর ২-এর পরিপূরক: 11111010
যোগ করি:
-5 -> 11111011
-6 -> 11111010
-------------------
-11 -> 111110101
^
(ক্যারি বিট)
ব্যাখ্যা: এখানেও ক্যারি বিট 1 বাদ যাবে। অবশিষ্ট ফলাফল 11110101। এর সাইন বিট 1, অর্থাৎ এটি ঋণাত্মক সংখ্যা। এর মান কত? এটি আবার ২-এর পরিপূরক করলে প্রকৃত মান পাওয়া যাবে: 00001010 + 1 = 00001011 (১১)। অর্থাৎ ফলাফল -১১।
ওভারফ্লো (Overflow) কী এবং কেন হয়?
অনেক সময় দুটি সংখ্যা যোগ করলে ফলাফল রেজিস্টারের ধারণক্ষমতার বাইরে চলে যায়। তখন সাইন বিট পরিবর্তিত হয়ে ভুল ফলাফল প্রদর্শন করে। একে ওভারফ্লো বলে।

সংজ্ঞা (Overflow): কম্পিউটার রেজিস্টারে নির্দিষ্ট সীমার চেয়ে বড় কোনো গাণিতিক ফলাফল আসলে তা ধারণ করা সম্ভব হয় না এবং সাইন বিট পরিবর্তিত হয়ে ভুল ফলাফল দেয়। এই অবস্থাকে ওভারফ্লো (Overflow) বলে।
কখন ওভারফ্লো হয়?
- দুটি ধনাত্মক সংখ্যা যোগ করলে যদি ফলাফল ঋণাত্মক আসে (সাইন বিট ১ হয়ে যায়)।
- দুটি ঋণাত্মক সংখ্যা যোগ করলে যদি ফলাফল ধনাত্মক আসে (সাইন বিট ০ হয়ে যায়)।
- দ্রষ্টব্য: একটি ধনাত্মক ও একটি ঋণাত্মক সংখ্যা যোগ করলে কখনই ওভারফ্লো হয় না।
ক্যারি বিট vs ওভারফ্লো:
- ক্যারি বিট: স্বাভাবিক প্রক্রিয়ায় উৎপন্ন অতিরিক্ত বিট, যা বাদ দেওয়া হয় (সমস্যা নেই)।
- ওভারফ্লো: একটি এরর বা ত্রুটি, যা নির্দেশ করে যে উত্তরটি ভুল (সমস্যা আছে)।
পরীক্ষার টিপস (Exam Tip): সৃজনশীল প্রশ্নে যদি দেখো যোগফলের সাইন বিট প্রত্যাশিত চিহ্নের উল্টো এসেছে (যেমন দুই পজিটিভ যোগ করে নেগেটিভ), তখন মন্তব্যে অবশ্যই লিখবে "এখানে ওভারফ্লো ঘটেছে, তাই ফলাফল সঠিক নয়।"
সংক্ষিপ্ত সারাংশ (Quick Revision)
- কম্পিউটার বিয়োগের কাজ যোগের মাধ্যমে করে (২-এর পরিপূরক ব্যবহার করে)।
- ২-এর পরিপূরক = ১-এর পরিপূরক + ১।
- ঋণাত্মক সংখ্যার সাইন বিট ১, ধনাত্মক সংখ্যার ০।
- ৮-বিট রেজিস্টারে সংখ্যার রেঞ্জ -১২৮ থেকে +১২৭।
- ক্যারি বিট বাদ দেওয়া হয়, কিন্তু ওভারফ্লো হলে ফলাফল ভুল হয়।
- ২-এর পরিপূরক ব্যবহারে +০ এবং -০ এর সমস্যা থাকে না।
গুরুত্বপূর্ণ পরিভাষা (Glossary)
| পরিভাষা (Term) | সংজ্ঞা (Definition) |
|---|---|
| MSB (Most Significant Bit) | বাইনারি সংখ্যার সর্ববাম বিট বা সর্বোচ্চ গুরুত্বের বিট, যা সাইন বিট হিসেবে কাজ করে। |
| 2's Complement | ঋণাত্মক সংখ্যা প্রকাশের আধুনিক পদ্ধতি যা ১-এর পরিপূরকের সাথে ১ যোগ করে পাওয়া যায়। |
| Register | সিপিইউ (CPU) এর অভ্যন্তরে দ্রুতগতির মেমরি যা বিট সংরক্ষণ করে। |
| Carry Bit | যোগফলের সর্বোচ্চ বিট (MSB) হতে উৎপন্ন অতিরিক্ত বিট যা রেজিস্টারের বাইরে চলে যায়। |
| Overflow | রেজিস্টারের ধারণক্ষমতার চেয়ে বেশি মানের ফলাফল আসার ত্রুটি। |