在计算机内部,负数都是以补码方式存在的。正数的原码、反码、补码都是一样的。而负数的源码、反码、补码略有不同,具体的计算方法如下:
7的原码、反码、补码如下
代码语言:javascript复制0000 0111 //byte
0000 0000 0000 0111 //word
0000 0000 0000 0000 0000 0000 0000 0111 //dword
-7的原码最高位是符号位,修改为1即可
代码语言:javascript复制1000 0111 //byte
1000 0000 0000 0111 //word
1000 0000 0000 0000 0000 0000 0000 0111 //dword
-7的反码是除符号位以外全部取反
代码语言:javascript复制1111 1000 //byte
1111 1111 1111 1000 //word
1111 1111 1111 1111 1111 1111 1111 1000 //dword
-7的补码在反码的基础上 1
代码语言:javascript复制1111 1001 //bit
1111 1111 1111 1001 //word
1111 1111 1111 1111 1111 1111 1111 1001 //dword
F F F F F F F 9//0xFFFFFFF9
最后运算的结果-7的十六进制是0xFFFFFFF9,我们也可以在程序中测试一下。