একটি প্রদত্ত বাইনারি সংখ্যার জন্য দুটির পরিপূরক দুটি পদ্ধতিতে গণনা করা যেতে পারে, যা নিম্নরূপ -
-
পদ্ধতি 1 − প্রদত্ত বাইনারি সংখ্যাটিকে একজনের পরিপূরক হিসাবে রূপান্তর করুন এবং তারপরে, 1 যোগ করুন।
-
পদ্ধতি 2 − Least Significant Bit (LSB) থেকে প্রথম বিট সেটের পরের শূন্যের পরের শূন্য যা অপরিবর্তিত থাকে এবং বাকি সবগুলি পরিপূরক হওয়া উচিত।
দুজনের পরিপূরক খুঁজে পাওয়ার যুক্তি একটি প্রদত্ত বাইনারি সংখ্যার জন্য নিম্নরূপ -
for(i = SIZE - 1; i >= 0; i--){ if(one[i] == '1' && carry == 1){ two[i] = '0'; } else if(one[i] == '0' && carry == 1){ two[i] = '1'; carry = 0; } else { two[i] = one[i]; } } two[SIZE] = '\0'; printf("Two's complement of binary number %s is %s\n",num, two);
একজনের পরিপূরক খোঁজার জন্য যুক্তি একটি প্রদত্ত বাইনারি সংখ্যা থেকে হল −
for(i = 0; i < SIZE; i++){ if(num[i] == '0'){ one[i] = '1'; } else if(num[i] == '1'){ one[i] = '0'; } } one[SIZE] = '\0'; printf("Ones' complement of binary number %s is %s\n",num, one);
উদাহরণ
একটি প্রদত্ত সংখ্যা −
-এর জন্য দুটির পরিপূরক খুঁজে বের করার জন্য C প্রোগ্রামটি নিচে দেওয়া হল#include<stdio.h> #include<stdlib.h> #define SIZE 8 int main(){ int i, carry = 1; char num[SIZE + 1], one[SIZE + 1], two[SIZE + 1]; printf("Enter the binary number\n"); gets(num); for(i = 0; i < SIZE; i++){ if(num[i] == '0'){ one[i] = '1'; } else if(num[i] == '1'){ one[i] = '0'; } } one[SIZE] = '\0'; printf("Ones' complement of binary number %s is %s\n",num, one); for(i = SIZE - 1; i >= 0; i--){ if(one[i] == '1' && carry == 1){ two[i] = '0'; } else if(one[i] == '0' && carry == 1){ two[i] = '1'; carry = 0; } else{ two[i] = one[i]; } } two[SIZE] = '\0'; printf("Two's complement of binary number %s is %s\n",num, two); return 0; }
আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
Enter the binary number 1000010 Ones' complement of binary number 1000010 is 0111101 Two's complement of binary number 1000010 is 0111110