C Programming - Bitwise Operators - Discussion

Discussion Forum : Bitwise Operators - Find Output of Program (Q.No. 2)
2.
If an unsigned int is 2 bytes wide then, What will be the output of the program ?
#include<stdio.h>

int main()
{
    unsigned int m = 32;
    printf("%x\n", ~m);
    return 0;
}
ffff
0000
ffdf
ddfd
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
35 comments Page 1 of 4.

Anirudh sharma said:   9 years ago
~ 32 = (32 + 1) *-1.
- 33
33 = 0000 0000 0010 0001.
2complemnt is:

1111 1111 1101 1111
f f d f

So the answer is f f d f.
(7)

Nikhil tekade said:   3 years ago
Negative numbers are treated with 2's complement method.

1's complement: Inverting the bits ( all 1s to 0s and all 0s to 1s).
2's complement: Adding 1 to the result of 1's complement.

Binary of 32(2byte) : 0000 0000 0010 0000.
Representing -32:

1s complement of 32(2byte) : 1111 1111 1101 1111.
Adding 1 to 1's comp. result : 1111 1111 1110 0000.
Hexadecimal: f f df.
(5)

Zakar said:   7 years ago
32 complement = 1111 1111 1101 1111.

In hexadecimal f f d f.
(3)

Jishan said:   8 years ago
Negative numbers are treated with 2's complement method.

1's complement: Inverting the bits ( all 1s to 0s and all 0s to 1s).
2's complement: Adding 1 to the result of 1's complement.

Binary of 32(2byte) : 0000 0000 0010 0000.
Representing -32:
1s complement of 32(2byte) : 1111 1111 1101 1111.
Adding 1 to 1's comp. result : 1111 1111 1110 0000.
Hexadecimal : f f e 0.

This is not given in the option, checked on Ubuntu machine.
(3)

Selvameenal C said:   8 years ago
Yes, there is m=32=0000 0000 0010 0000;
~m(1s complement)= 1111 1111 1101 1111;
Thus answer : ffdf.
(3)

Vinod said:   1 decade ago
"%x" represents hexadecimal. How to print a number in binary form?
(1)

Sravanthi said:   1 decade ago
Assume each digit from right to left as 2 power i.
Where i =0,1,2...

Now 32 is 0000 0000 0010 0000.

Which mean 0*(2 power 0)+0*(2 power 1)+0*(2 power 2)+0*(2 power 3)+0*(2 power 4)+1*(2 power 5)+0*(2 power 6)+..

Raina said:   1 decade ago
HOW TO WRITE .

32 = 0000 0000 0010 0000.

Can anyone explain this?

Gaurav bisht said:   1 decade ago
Since unsigned 2 byte m = 32 can be represented as:

0000 0000 0010 0000

To do ~m means just complimenting m i.e.

~m = 1111 1111 1101 1111

In Hexa 1111 = f and 1101 = d

Therefore result is ffdf.

Sangita said:   1 decade ago
The output is ffffffdf. in indiabix.com because its runs on 32 bit linux environment. If we run in turbo it will give ffff.

It varies from platform to platform.


Post your comments here:

Your comments will be displayed after verification.