May 15, 2020

C program using bitwise compliment (~)

EX: write a C program to perform Compliment operation of two intiger's. How to write a C program to perform Compliment operation of two intiger's. C program to perform Compliment operation of two intiger's.

Input from user:


Expected Output:

After performing Compliment operation the output is: 230

Logic to perform Compliment operation of two intiger's:

 Firstly you need to know how work Compliment operator.

  • It sets bit value 1 only if corresponding bit of operand is 0. Means it changes 1 value to 0 and 0 value to 1.

1. We take one intiger numbers a=25.

 2. Binary representation of a -Compliment is-

      a      = 0001 1001
      a~   = 1110 0110 =230 in decimal.

3. After performing
Compliment (~), 8 bit binary representation is 1110 0110 which is 230 in decimal.

But output is not 230. The output of the Program is -26.
To understand this you need to know how work's 2's compliment.

2's compliment:

For any intiger n, bitwise Complement of n is -(n+1).

Means  2's compliment of a number is equal to the compliment of that number plus 1.

For Example: 

We take 230. 8 bit binary representation of 230 is 1110 0110 so 2's compliment of that number is...                                             -(0001 1001)

-0001 1001
+                1
-0001 1010=-26(in decimal)

The bitwise Complement of 25 is 230 in decimal. The 2's compliment of 230 is -26. Hence, the output is -26 not  230.


void main()
int a=25;

printf("Output is:%d",~a);


Above program shows the following output:

No comments:

Post a Comment

If you have any doubts, please discuss here...