原码 反码 补码

比如 0000 0111 表示 7,那么如何表示 -7 呢?计算机里如何保存 -7 呢?

计算机里是分 有符号数 无符号数

将第一位作为符号位,0正1负

0000 0111 7 (真值)

1000 0111 -7 (真值)

但是我们是需要进行计算加减乘除的,很明显 0000 0111 + 1000 0111 结果不等于0

存储和计算

存储的是 原码

参与计算的是 补码


正数:原码 = 反码 = 补码

负数:补码 = 原码 取反 +1 【这里的取反都是对 非符号位取反

  1. **原码 = 补码 -1 取反**

正数的原码反码补码相同

00103_原码反码补码 - 图1

负数的原码反码补码需要计算

00103_原码反码补码 - 图2

示例

00103_原码反码补码 - 图3