int a=3; ~a=-4
3的二进制是011,第一位的0是符号位,按位取反为100,符号位为1,数字位为00,因为这是个负数要转换成补码,00的补码为100,再加上前面那个符号位1,最后得1100,十进制为-4。
计算补码有两个办法:
1、按位取反再加1
00-->11-->100
2、用高位1减去这个数
100-00=100