好的,我来帮你系统梳理 原码、反码、补码 的概念、计算方法及应用,并附示例,方便快速理解。


1️⃣ 概念概述

在计算机中,整数的二进制表示有多种形式:

名称含义用途
原码(Sign-Magnitude)用最高位表示符号,0 正数,1 负数,其余位表示数值大小理解数字符号
反码(One’s Complement)正数同原码,负数是原码按位取反(符号位除外)早期负数表示
补码(Two’s Complement)正数同原码,负数 = 反码 +1现代计算机标准,简化加减法运算

补码是目前 计算机中表示整数的标准方式


2️⃣ 原码(Sign-Magnitude)

  • 规则
    • 正数:符号位 0,数值位表示大小
    • 负数:符号位 1,数值位表示大小
  • 优点:直观,容易理解符号
  • 缺点:加减法运算复杂,需要区分符号

示例(8位二进制)

十进制原码
+500000101
-510000101

3️⃣ 反码(One’s Complement)

  • 规则
    • 正数:反码 = 原码
    • 负数:反码 = 原码除符号位外,按位取反
  • 特点
    • 可以表示负数,但存在 正负零 问题(00000000 和 11111111)

示例(8位二进制)

十进制原码反码
+50000010100000101
-51000010111111010

4️⃣ 补码(Two’s Complement)

  • 规则
    • 正数:补码 = 原码
    • 负数:补码 = 反码 + 1
  • 优点
    1. 加减法统一处理,无需区分符号
    2. 只有一个零(00000000)
    3. 计算机现代标准表示整数

示例(8位二进制)

十进制原码反码补码
+5000001010000010100000101
-5100001011111101011111011

验证加减法

5 + (-5) = 00000101 + 11111011 = 00000000 (忽略进位)

✅ 正确


5️⃣ 转换方法总结

  1. 正数
    • 原码 = 反码 = 补码
  2. 负数
    • 原码:符号位 1 + 数值二进制
    • 反码:原码除符号位取反
    • 补码:反码 +1

公式

补码 = 负数的绝对值二进制 → 按位取反 → +1


6️⃣ 示例练习

  • 十进制 -9(8位表示)
  1. 正数 9 的二进制:00001001
  2. 原码:10001001
  3. 反码:11110110
  4. 补码:11110111
  • 验证
-9 + 9 = 11110111 + 00001001 = 100000000
忽略第9位进位 => 00000000 ✅


7️⃣ 小结

特性原码反码补码
符号位0正1负0正1负0正1负
正数表示直接二进制同原码同原码
负数表示符号位1+数值除符号位取反反码+1
运算加减法需区分符号可加减,但存在正负零加减法统一,标准方法
零的表示+0, -0+0, -0只有 0

补码是现代计算机中 标准整数表示法,理解补码是学计算机组成原理和底层编程的基础。