求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。
例如~9的运算为:
~(0000000000001001)结果为:1111111111110110
解释:int为2字节(16位二进制),在计算机中负数的存储方式是其补码,而-3的补码为11 11 11 11 11 11 11 01,按位取反为,00 00 00 00 00 00 00 10,就是2了
补码:正数的补码就是原码,负数的补码为,负数的绝对值取反加1,-3的补码为:-3的绝对值3,二进制为00 00 00 00 00 00 00 11 ,取反为11 11 11 11 11 11 11 00,加1为11 11 11 11 11 11 11 01,这个就是-3在计算机中存储的二进制了
在计算机中存储a=-3,是存储3的补码,即0000 0011取反加1,即1111 1101(举8位为例,现在计算机中存储int类型是32位),所以对a进行取反操作得到的a的结果为0000 0010,即a=2.
~在C中是按位取反运算符。负数在计算机中表示为补码。如果整形是2个自己表示,-3的补码是00000011-〉11111101,对11111101取反等于00000010,所以输出2。