原码、反码、补码的区别和运算

在计算机内部,负数都是以补码方式存在的。正数的原码、反码、补码都是一样的。而负数的源码、反码、补码略有不同,具体的计算方法如下:

7的原码、反码、补码如下

0000 0111 //byte
0000 0000 0000 0111 //word
0000 0000 0000 0000 0000 0000 0000 0111 //dword

-7的原码最高位是符号位,修改为1即可

1000 0111 //byte
1000 0000 0000 0111 //word
1000 0000 0000 0000 0000 0000 0000 0111 //dword

-7的反码是除符号位以外全部取反

1111 1000 //byte
1111 1111 1111 1000 //word
1111 1111 1111 1111 1111 1111 1111 1000 //dword

-7的补码在反码的基础上+1

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,我们也可以在程序中测试一下。

2015-03-26_191520

评论