किसी दिए गए बाइनरी नंबर के लिए दो के पूरक की गणना दो तरीकों से की जा सकती है, जो इस प्रकार हैं -
-
विधि 1 − दिए गए बाइनरी नंबर को एक के पूरक में बदलें और फिर, 1 जोड़ें।
-
विधि 2 - कम से कम महत्वपूर्ण बिट (एलएसबी) से पहले बिट सेट के बाद अनुगामी शून्य, जिसमें एक अपरिवर्तित रहता है और शेष सभी को पूरक होना चाहिए।
दो के पूरक खोजने . का तर्क किसी दिए गए बाइनरी नंबर के लिए इस प्रकार है -
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);
उदाहरण
दी गई संख्या के लिए दो के पूरक खोजने के लिए सी कार्यक्रम निम्नलिखित है -
#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