为什么计算机使用补码?原码、反码、补码的关系

原码、反码、补码

机器数:一个数在计算机中的二进制表示形式。机器数是带符号的,最高位存放符号位, 正数为0, 负数为1。

真值:机器数对应的真正数值。比如 机器数1000 0001 的真值是-1

原码:原码就是符号位加上(真值的绝对值)。

[+1] = 0000 0001
[-1] = 1000 0001

反码:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

补码:正数的补码是其本身,负数的补码是其(反码+1)。

为什么计算机使用补码

计算机之所有有符号位,是因为减法电路极其复杂,而给数据加上符号位,然后使用加法代替减法可以大大简化电路。

如果计算机数据用原码表示, 符号位会也参与计算, 对于减法来说,结果是不正确的。

1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2

用反码计算减法, 结果的真值部分是正确的,但有{[0000 0000]原}和{[1000 0000]原}两个编码都表示0的问题。

原码和反码都不方便计算机进行计算,而补码很好地解决了原码和反码计算的问题,所以在计算机中,数据都是补码的形式!看到一个数据的十六进制是0XFF的时候,应该知道这是-1!

参考文章《原码、反码、补码的关系》

猜你喜欢

转载自blog.csdn.net/wei348144881/article/details/109073987