किसी दिए गए बाइनरी नंबर के लिए दो के पूरक की गणना दो तरीकों से की जा सकती है, जो इस प्रकार हैं -
-
विधि 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