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..????

int i=2;

printf("%d",~i);

when i did so, the o/p comes as -3,how..????

closed account (*zb0S216C*)

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

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

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

Topic archived. No new replies allowed.