原码、补码、反码、移码之间的转换

- 适用对象: 主要针对负数进行转换。正数的原码、反码、补码表示完全相同,无需转换。
反码法(适合硬件求补码)
- 定义: 基于补码的定义进行转换。
- 转换步骤(针对负数):
- 原码 → 反码: 保持符号位不变,将数值位(即除符号位以外的所有位)按位取反(0 变 1,1 变 0)。
- 反码 → 补码: 将反码的末位(最低有效位)加 1。如果加 1 后发生进位,则继续向高位进位。
- 特点: 运算过程涉及位取反和加法,这些操作在计算机硬件中易于高效实现,因此是计算机内部进行补码计算的基本方法。
扫描法(适合手工求补码)
- 定义: 一种快速进行负数原码和补码之间转换的手工方法,其转换规则在两个方向上是完全对称的。
- 转换步骤(原码转补码,或补码转原码,针对负数):
- 从二进制数的右侧(最低位)向左侧扫描。
- 扫描过程中,遇到的第一个 ‘1’ 及其右侧的所有位(包括第一个 ‘1’ 本身)保持不变。
- 第一个 ‘1’ 左侧的所有位(不含符号位) 按位取反(0 变 1,1 变 0)。
- 符号位(最高位)始终保持不变。
- 特点: 操作直观简单,适用于手工快速转换。由于其规则对称性,该方法既可用于原码转补码,也可用于补码转原码,无需区分方向。

由补码求相反数的补码
- 全部按位取反
- 结果末位加一

已知原码、反码、补码,求真值(十进制)

习题
补码取相反数,结果可能溢出

负数补码数值位绝对值越小,其补码值越小。参考 补码和原码区间对比

负数区间内,补码数值位越大,真值越大(也就是真值的绝对值越小)
