চিহ্নযুক্ত সংখ্যা, ১ ও ২ এর পরিপূরক

সব ধরনের সংখ্যাকে দুই ভাগে ভাগ করা হয়। ধনাত্মক সংখ্যা এবং ঋনাত্মক সংখ্যা। কম্পিউটার যেহেতু 0 এবং 1 ছাড়া কিছু বুঝে না, তাই কম্পিউটারকে ধনাত্মক এবং ঋনাত্মক সংখ্যা বুঝানোর জন্য একটি bit বরাদ্দ করা থাকে। বরাদ্দকৃত bit কে sign bit বলে। আর যখন কোন সংখ্যার পূর্বে sign bit থাকবে তখন সেই সংখ্যাকে চিহ্নযুক্ত সংখ্যা বা signed number বলা হয়।
ধনাত্মক সংখ্যা বুঝাতে sign bit ‘0’ এবং ঋনাত্মক বুঝাতে sign bit ‘1’ ব্যবহার করা হয়।

চিহ্ন যুক্ত সংখ্যা লিখার ক্ষেত্রে নির্দিষ্ট সংখ্যা বিট নিয়ে লিখতে হয়। কারন গাণিতিক কাজের জন্য কম্পিউটারের প্রসেসর বাইনারি ডেটাকে রেজিস্টারে সাময়িক ভাবে সংরক্ষন করে, রেজিস্টারের আকার 2n bit হয়ে থাকে, এখানে n হল যে কোনো পূর্ণসংখ্যা। যেমন- 23 = 8 bit
8 bit রেজিস্টারের ক্ষেত্রে সর্ব বামের বিটটি হলো চিহ্ন বিট এবং সর্বডানের ৭-বিট হল ডেটা বিট। 
যেমন-
(00000101) = (+5)₁₀                 
│└──── Data bit
Sign bit

(10000101) = (-5)₁₀
│└──── Data bit
Sign bit

বাইনারিতে ধনাত্মক সংখ্যায় সব সময় sign bit এর মান 0 রেখে প্রকাশ করা হয়। তবে ঋনাত্মক সংখ্যা প্রকাশ করার ক্ষেত্রে sign bit 1 করা ছাড়াও আরো দুটি পদ্ধতি আছে। সেগুলো হলঃ
             -এর পরিপূরক (1's complement)
             -এর পরিপূরক (2's complement)
            
-এর পরিপূরক (1's complement):

ঋণাত্মক সংখ্যা তৈরির জন্য -এর পরিপূরক (1's complement) গঠন ব্যবহার করা হয়।
কোনো বাইনারি সংখ্যার প্রতিটি বিট কে 0 এর স্থানে 1 এবং 1 এর স্থানে 0 বসিয়ে দিলে সেটি -এর পরিপূরকে পরিনত হয়। যেমন-

(00000101) = (+5)₁₀ 
↓↓↓↓↓↓↓↓
(11111010) = (-5)₁₀ ← 1's complement

-এর পরিপূরক করলে যে কোনো ধনাত্মক সংখ্যা ঋনাত্মক সংখ্যা পরিনত হয়।

-এর পরিপূরক (2's complement):

ঋণাত্মক সংখ্যা তৈরির আরেকটি পদ্ধতি হচ্ছে -এর পরিপূরক (2's complement) গঠন  করা। অর্থাৎ ঋণাত্মক সংখ্যা তৈরির জন্য -এর পরিপূরক (2's complement) গঠন ব্যবহার করা হয়।

কোনো বাইনারি সংখ্যার -এর পরিপূর গঠন করতে হলে বাইনারি সংখ্যাটির ধনাত্মক মানের ১ এর পরিপূরক করতে হবে। তারপর  ১ এর পরিপূরকে প্রাপ্ত মানের সাথে বাইনারি ১ যোগ করতে হবে।
যেমন-
(00000101) = (+5)₁₀ 
 ↓↓↓↓↓↓↓↓
(11111010) = (-5)₁₀ ← 1's complement
      + 1
(11111011)2 = (-5)10  ← 2's complement

বাইনারি ২-এর পরিপূরক গঠনের গুরুত্ব :

1. বাইনারি প্রকৃত মান গঠন এবং ১-এর পরিপূরক গঠনে +০ ও -০ এর জন্য দুটি ভিন্ন ভিন্ন মান পাওয়া যায়। কিন্তু বাস্তবে +০ ও -০ গঠন সম্ভব নয়। ২-এর পরিপূরক গঠনের ক্ষেত্রে +০ ও -০ এর জন্য শুধু একটি মান তৈরি হয়।
2. ২-এর পরিপূরক গঠনে সার্কিট ডিজাইন সরল। এই সার্কিট দ্রুত কাজ করে এবং দামে সস্তা।
3. ২-এর পরিপূরক গঠনে একই সার্কিট দিয়ে যোগ ও বিয়োগের কাজ করা যায়।
4. ২-এর পরিপূরক গঠনে একই সার্কিট দিয়ে চিহ্নযুক্ত সংখ্যা এবং চিহ্নবিহীন সংখ্যা যোগ করা যায়।

২ এর পরিপূরক ব্যবহার করে বাইনারি যোগ :

নিম্নে ২ এর পরিপূরক পদ্ধতিতে ৮ বিট সংখ্যার জন্য যোগ করার পদ্ধতি উল্লেখ করা হলো-
          ১. সংখ্যাদ্বয়কে তার সমকক্ষ বাইনারি সংখ্যায় প্রকাশ করতে হবে।
২.  সংখ্যাদ্বয়ের সমকক্ষ বাইনারি সংখ্যার বিট সংখ্যা সমান করতে হবে। (প্রয়োজনে পূর্ণ সংখ্যার ক্ষেত্রে বামে এবং ভগ্নাংশের ক্ষেত্রে ডানে শুন্য বসিয়ে)
৩. যে কোন ঋণাত্মক সংখ্যার ক্ষেত্রে সংখ্যাটির ২ এর পরিপূরক নির্ণয় করতে হবে, সংখ্যাটি ধণাত্মক হলে ২ এর পরিপূরক করতে হবে না ।
৪. অত:পর সংখ্যাদ্বয়ের চূড়ান্ত অবস্থা যোগ করে ফলাফল পাওয়া যাবে। উল্লেখ্য ফলাফলের ক্যারি বিট ওভার ফ্লো হলে তা বিবেচনা করা হবেনা।
উদাহরণ:
ক. ৮ বিট রেজিস্টারের জন্য +৮ এবং -৫ এর যোগফল নির্ণয় কর।
সমাধান: এখানে যেহেতু ৮ ধণাত্মক, তাই তার শুধু সমকক্ষ বাইনারি নির্ণয় করতে হবে, ২ এর পরিপূরক করতে হবে না। ৫ যেহেতু ঋণাত্মক তাই এর ২ এর পরিপূরক করতে হবে।

+8     :         0 0 0 0 1 0 0 0
-5      :         1 1 1 1 1 0 1 1 (২ এর পরিপূরক)
+3     :      1 0 0 0 0 0 0 1 1

ক্যারি বিট ১ বিবেচনা করা হবেনা। তাই যোগফল ০০০০০০১১।

খ. ৮ বিট রেজিস্টারের জন্য -৮ এবং +৫ এর যোগফল নির্ণয় কর।
সমাধান:
-8      :         1 1 1 1 1 0 0 0 (২ এর পরিপূরক)
+5     :         0 0 0 0 0 1 0 1
-3      :         1 1 1 1 1 1 0 1

যোগফলের চিহ্ন বিট ১, কাজেই যোগফল ঋণাত্মক এবং ২ এর পরিপূরক গঠনে আছে।

২ এর পরিপূরক ব্যবহার করে বাইনারি বিয়োগ:

২ এর পরিপূরক পদ্ধতিতে যোগের সাহায্যে বিয়োগের কাজও করা হয়। নিম্নে ২ এর পরিপূরক পদ্ধতিতে ৮ বিট সংখ্যার জন্য বিয়োগ করার পদ্ধতি উল্লেখ করা হলো-
১. প্রথমেই নেগেশনের মাধ্যমে বিয়োজ্য সংখ্যাটির চিহ্ন পরিবর্তন করতে হবে। (অর্থাৎ - × - = + এবং - × + = - করতে হবে)
          ২. সংখ্যাদ্বয়কে তার সমকক্ষ বাইনারি সংখ্যায় প্রকাশ করতে হবে।
৩.  সংখ্যাদ্বয়ের সমকক্ষ বাইনারি সংখ্যার বিট সংখ্যা সমান করতে হবে। (প্রয়োজনে পূর্ণ সংখ্যার ক্ষেত্রে বামে এবং ভগ্নাংশের ক্ষেত্রে ডানে শুন্য বসিয়ে)
৪. যে কোন ঋণাত্মক সংখ্যার ক্ষেত্রে সংখ্যাটির ২ এর পরিপূরক নির্ণয় করতে হবে, সংখ্যাটি ধণাত্মক হলে ২ এর পরিপূরক করতে হবে না ।
৫. অত:পর বিয়োজ্যটির নেগেশনের সাথে বিয়োজকটি যোগ করে ফলাফল পাওয়া যাবে। উল্লেখ্য ফলাফলের ক্যারি বিট ওভার ফ্লো হলে তা বিবেচনা করা হবেনা।

উদাহরণ:
ক. ৮ বিট রেজিস্টারের জন্য -৫ থেকে -৮ বিয়োগ কর।
সমাধান:
-৫-(-৮)
= -৫+৮
সুতরাং -৫ এবং +৮ যোগ করতে হবে।

-5      :          1 1 1 1 1 0 1 1 (২ এর পরিপূরক)
+8     :          0 0 0 0 1 0 0 0
+3     :       1 0 0 0 0 0 0 1 1


ক্যারি বিট ১ বিবেচনা করা হবেনা। তাই বিয়োগফল 0 0 0 0 0 0 1 1

খ. ৮ বিট রেজিস্টারের জন্য -৮ থেকে +১৩ বিয়োগ কর।
সমাধান:
-         ৮ - (+১৩)
= - ৮ - ১৩
সুতরাং -৮ এবং -১৩ যোগ করতে হবে।

-8      :          1 1 1 1 1 0 0 0 (২ এর পরিপূরক)
-13    :          1 1 1 1 0 0 1 1 (২ এর পরিপূরক)
-21    :       1 1 1 1 0 1 0 1 1

                
 ক্যারি বিট ১ বিবেচনা করা হবেনা। তাই বিয়োগফল 1 1 1 0 1 0 1 1।  বিয়োগফলের চিহ্ন বিট ১, কাজেই বিয়োগফল   ঋণাত্মক এবং ২ এর পরিপূরক গঠনে আছে।

গ. ২ এর পরিপূরক ব্যবহার করে  (11010101)2 থেকে (10011011)2 বিয়োগ কর।
সমাধান:
এখানে উভয় সংখ্যার বিট সমান। বিয়োজক হলো  11010101 এবং বিয়োজ্য হলো 10011011। এখন বিয়োজ্য সংখ্যার ২ এর পরিপূরক বের করে বিয়োজক সংখ্যার সাথে যোগ করতে হবে।

           1 1 0 1 0 1 0 1
           0 1 1 0 0 1 0 1 (10011011 -এর ২ এর পরিপূরক)
       1 0 0 1 1 1 0 1 0

 
 ক্যারি বিট ১ বিবেচনা করা হবেনা। তাই বিয়োগফল 0 0 1 1 1 0 1 0।  


No comments:

Post a Comment