Write a C program to input binary number from user and find twos complement of the binary number. How to find 2s complement of a binary number in C. Logic to find twos complement of a binary number in C programming.
Example
Input
Input binary number: 01101110
Output
Twos complement: 10010010
Required knowledge
Basic C programming, If else, For loop, String
What is twos complement?
Twos complement of an <i>N</i>
-bit number is defined as the complement with respect to 2<sup>N</sup>
. It is the result of subtracting the number from 2<sup>N</sup>
, which in binary is one followed by <i>N</i>
zeroes.
In simple words twos complement is defined as sum of ones complement of a binary number and 1.
Logic to find twos complement
Step by step descriptive logic to find twos complement of a binary string.
- Input a binary string from user. Store it in a variable say binary.
- Find ones complement of the binary string. Store the result in some variable say onesComp.
- Declare and initialize another binary string variable to store twos complement, say
twosComp = ""
. - Initialize a variable to store carry bit during addition, say
carry = 1
.You may think now, why initialize carry to 1, why not 0? Since, we need to add only 1 to the binary string hence, I have initially assumed carry bit as the bit to be added.
- Run a loop from length of binary string to 1, decrement 1 in each iteration. The loop structure should look like
for(i=SIZE-1; i>=1; i--)
(where SIZE is length of the binary string).You may think, why iterating in reverse order? Because addition is carried out in right to left order.
- Inside the loop there can be three cases.
- If both current binary bit and carry bit are 1 then, put 0 to twos complement. Which is
if(onesComp[i]=='1' && carry==1)
then,twosComp[i] = '0'
, carry is still preserved to 1. - If current binary bit is 0 and carry bit is 1 then, put 1 to twos complement and set carry bit to 0. Which is
if(onesComp[i]=='0' && carry==1)
then,twosComp[i] = '1'
andcarry = 0
. - If carry bit is 0, then assign the value of onesComp to twosComp.
- If both current binary bit and carry bit are 1 then, put 0 to twos complement. Which is
Program to find twos complement of a number
Output
Enter 8 bit binary value: 01101100 Original binary = 01101100 Ones complement = 10010011 Twos complement = 10010100
Happy coding
Recommended posts
- Loop programming exercises and solutions in C.
- C program to convert Binary to Octal number system.
- C program to convert Binary to Decimal number system.
- C program to convert Octal to Binary number system.
- C program to convert Decimal to Binary number system.
- C program to convert Hexadecimal to Binary number system.