can any one tell me how ~ operator works.,
int i=2;
printf("%d",~i);
when i did so, the o/p comes as -3,how..????
It inverts all the bits of its operand. The resulting value is of course the opposite of its operand.
Wazzak
This operator reverse each bit of an integral type. So if a bit had 1 then it will have 0 and vice versa.
2 can be represented in hexadecimal notation as
00 00 00 02
after applying the ooperator ~ we get
FF FF FF FD
which is equivalent to -3
There is so-called two-compliment operation. For example if you have a value equal to 2 then that to make it -2 yu can write ~2 + 1. For example
std::cout << ~2 + 1 << std::endl;
Last edited on
~changes all the bits of the variable, including the bit containing the sign
Your example (with 16 bit variables)
2 is 00000000 00000010
-3 is 11111111 11111101
If you just want to change the sign of an int, just use the - operator