原码 反码 补码的定义
记x为二进制数的真值,为二进制数原码,
为其反码,
为补码
对于n+1位的二进制数,其原码反码补码都定义在有限域上。
当0=<x<,原,反,补码都相同,且x=
=
=
当<x<0时,
原码符号位(最高位)为1,故
反码是原码除符号位外都取反,即,n个1
补码定义为真值加上模值,即
扫描法求补码
对于8位二进制数,原码和补码由如下对应关系
原码 | 补码 |
---|---|
0000 0000 | 0000 0000 |
0000 0001(1) | 0000 0001 (1) |
1000 0001 (-1) | 1111 1111 (255) |
1000 0010 (-2) | 1111 1110(254) |
1111 1111 (-127) | 1000 0001 (129) |
--------------------- | 1000 0000 |
由此可以看出一种对负数求补码的方法,在原码中找到最右边的1,在这个1之前的数全部取反(除符号位)
对负数求原码:在补码中找到最右边的1,在这个1之前的数全部取反(除符号位)
求补器是基于这种方法实现的: