Home > Article > Backend Development > Find the 2's complement of a given binary number using C
Consider the example given below -
Enter as follows:
Enter the binary number : 10010001
The output is as follows:
1 The complement of 10010001 is 01101110
2 The complement of 10010001 is 01101111
Refer to an algorithm to find the 2'c complement of a given binary number.
Step 1 - Get Started.
Step 2 - Read the binary number at runtime.
Step 3 - Copy the binary number to strdp.
Step 4 - len: = strlen(str)
Step 5 - For i = 0 to len-1 execute
Step 5.1 - If str[i] == '1' then
Step 5.1.1 - str[i] == '0'
Step 5.2 - Otherwise
Step 5.2.1 - str[i ] == '1'
Step 5.3 - i: = i 1
Step 5.3 - i: = i 1
p>
Step 6 - Mask Code: = 1
Step 7 - For i: = len-1 to 0 execute
Step 7.1 - If mask == 1 then p>
Step 7.1.1 − If str[i] == '1' then
Step 7.1.1.1 − str[i]: = '0'
Step 7.1.1.2 − mask: = 1
Step 7.1.2 − else
Step 7.1.2.1 − str[i]: = '1'
Step 7.1.2.2 - Mask: = 0
Step 7.1.3 - End if
Step 7.2 - End if
Step 8 - Print 2's complement.
Step 9 - Stop.
The following is a C program to find the 2'c complement of a given binary number -
Live Demonstration
#include <string.h> #include<stdio.h> main(){ char str[32],strdp[32]; int mask,i; printf("Enter a binary number:"); scanf("%s",str); strcpy(strdp,str); for(i=0;i<strlen(str);i++) /* computing 1's complement */{ if(str[i]=='1') str[i]='0'; else str[i]='1'; } printf("1\'s complement of %s is %s</p><p>",strdp,str); mask=1; for(i=strlen(str)-1;i>=0;i--){ if(mask==1){ if(str[i]=='1'){ str[i]='0'; mask=1; } else{ str[i]='1'; mask=0; } } } printf("2\'s complement of %s is %s",strdp,str); }
When the above program is executed, the following results are produced-
Enter a binary number:11001110 1's complement of 11001110 is 00110001 2's complement of 11001110 is 00110010
The above is the detailed content of Find the 2's complement of a given binary number using C. For more information, please follow other related articles on the PHP Chinese website!