(1)、8的二进制表示为00000000 00000000 00000000 00001000 ,~x为11111111 11111111 11111111 11110111 ,首位是1,说明是一个负数,负数在计算机中是用补码表示的,因此这是一个数的补码,补码解释为原码的规则是首位不变,其余位减1再取反,即10000000 00000000 00000000 00001001,这个数就是-9。
(2)、一个负数的补码这样写:首位为1,其余位为此数的绝对值取反再加1,所以-8的补码是11111111 11111111 11111111 11111000 ,在计算机里-8就是这样存储的,>>>运算符的作用是右移并在首位补0,所以变为01111111 11111111 11111111 11111100,因为首位变成了0,所以成了一个正数,这个数刚好是2147483644。
(3)、>>运算符的作用是右移,首位原来是1就补1,原来是0就补0,所以-8右移一位的结果是11111111 11111111 11111111 11111100,这正是-4的补码。