按位取反是对补码进行运算,当运算完后,再将补码变回原码。
正数
正数的补码、反码都是其本身。
正数:9
原码 | 反码 | 补码 |
---|---|---|
0000 1001 | 0000 1001 | 0000 1001 |
对补码按位取反之后为:1111 0110,此时的二进制数为补码。
此时的二进制数为补码,因为负数的补码是反码加1
先减一变为反码 1111 0101
反码再取反变为原码 1000 1010 (-10)
所以9的按位取反结果为-10
负数
负数的反码是符号位不变,其余位取反。
负数的补码是反码加1。
负数:-9
原码 | 反码 | 补码 |
---|---|---|
1000 1001 | 1111 0110 | 1111 0111 |
补码按位取反之后为:0000 1000,此时的二进制数为补码,因为正数的补码、反码都是其本身。
所以-9的按位取反结果为8