原码:最高位表示符号位(0 表示正数,1 表示负数),其余位表示数值的绝对值
反码:正数的反码 = 原码本身 负数的反码 = 符号位不变,其余位按位取反
补码:正数的补码 = 原码本身 负数的补码 = 反码 + 1(末位加 1)
为什么计算机用补码?
1.统一加减法
减法可以直接转化为加法运算,硬件只需实现加法器。
2.避免双零问题
补码中 0 只有一种表示,节省一个编码。
3.表示范围更大
补码能多表示一个最小负数(如 8 位补码可表示 -128)。
其实原码、反码、补码的出现,本质上是为了解决计算机如何表示和计算负数的问题。