大家都知道5的取反(翻转)为-6。那么为什么会是-6呢?接下来我将详细介绍一下。
首先要明确几点(原码、反码、补码):
- 正数:
原码=反码=补码 - 负数
反码:符号位不变,其他位取反
补码 = 反码 + 1 - 负数补码转换为原码的规则:
原码=补码的符号位不变,其他位取反,再加1
一个十进制的5,用一个字节的二进制表示为:0000 0101,因为5是正数,因此,原码=反码=补码,现代计算机都是 使用二进制补码进行运算,对5的补码进行取反操作:
得到:1111 1010(结果即为对5进行了取反之后的补码)
得到补码之后,接下来只需转换为人能识别的原码即可。符号位不变,其他位取反得到:1000 0101,然后加1,得到原码即为:
1000 0101
+ 1
-----------------------------
1000 0110
(其中,第一位为符号位,后面用二进制进行表示为6)因此,得到的结果为-6。
即 ~5 = -6.