首先,计算机中所有的数据都是以二进制存储的(非 0 即 1),包括正负数的符号也只能用 0 或 1 来表示,所以二进制的最高位如果是 0
表示正数
,如果是 1
则表示负数
使用原码计算#
假设有数值 2 和 -2 如下所示:
+2
的原码为0000_0010
-2
的原码为1000_0010
假设要进行 2 + (-2) 计算
0000_0010
+1000_0010
=1000_0100
(十进制的-4
)
显然上面的计算结果不是想要的结果
使用反码计算#
为了解决上面问题,引入 反码
反码:
正数
的反码
和原码
相同,负数
的反码
除符号位不变,其他位取反
+2
的反码0000_0010
-2
的反码1111_1101
再进行 2 + (-2) 计算
0000_0010
+1111_1101
=1111_1111
上面的计算结果1111_1111
是反码,转成原码为1000_0000
也就是十进制-0
综上,可以看出使用 反码
出现了 +0
和 -0
的问题
使用补码计算#
在反码的基础上引入 补码
补码:正数的补码等于 原码,负数的补码是在
反码
的基础上 加1
+2
的补码0000_0010
-2
的补码1111_1110
再进行 2 + (-2) 计算
0000_0010
+1111_1110
=0000_0000
上述结果正是需要的结果,所以计算机中使用补码来进行计算