Skip to content
难度中等(★★)
建议时长75分钟
本课难点
  • 补码/移码的“人为定义”导致的最小值与0的唯一性
  • 定点整数与定点小数的范围公式(尤其是补码定点小数可取到-1)
  • 综合题:16进制转2进制后读补码,再根据题意还原真值

1.1.3 码制

本课核心知识点手绘速记(SVG)

📝 学习目标

  • 理解“符号位 + 数值位”的编码思想
  • 掌握原码/反码/补码/移码的转换规则
  • 熟练计算“字长为 N(含符号位)”时的表示范围与可表示个数
  • 能处理“进制转换 + 读码(补码/移码)”的综合真题

🎯 知识点速记

1) 四种常考码制(软设上午题高频)

码制正数负数典型用途关键现象
原码符号位0,数值位=绝对值符号位1,数值位=绝对值表示/存储直观存在“+0/-0”两种编码;不适合直接运算
反码与原码相同符号位不变,数值位按位取反过渡码仍有“+0/-0”,加法会出现“回卷进位”问题
补码与原码相同反码 + 1(只对数值位加1)加减运算的主力人为定义:用原来“-0”的编码表示最小负数,0只有一种编码
移码(偏置码)统一“加偏置”后存统一“加偏置”后存浮点数阶码(指数)常用可把有符号数映射为无符号序列,便于比较

2) 常用“读码”口诀

  • 补码转真值(负数)
    • 看符号位=1 → 负数
    • 数值位“按位取反 + 1”得到绝对值
    • 真值 = -绝对值
  • 移码转真值:真值 = 移码值 - 偏置(bias)

课堂强调:补码/移码有“人为定义”的特殊点(尤其是最小值、+0/-0),是软设高频坑。

🧠 难点与易错点

难点1:为什么补码能正确做加减

原码/反码的“+0/-0”会导致运算出现多余表示;补码把“-0”那组编码“借用”来表示最小负数,保证:

  • 0只有一种编码
  • 加法电路统一处理(溢出丢弃最高进位)

难点2:表示范围(定点整数 vs 定点小数)

题干若不特别说明:

  • 定点整数:小数点在最右(纯整数)
  • 定点小数:小数点在符号位之后(纯小数,绝对值 < 1)

易错点:不要把“立即数寻址”的“立即数”误当成“原码/补码的立即数”

“立即数”是寻址方式里的概念;码制题先判断“给的是哪种码”。

🔑 关键词解释

  • 字长 N:一个数据占用的二进制位数(题干给 N 时通常“含符号位”)。
  • 符号位:最高位,0 表示正,1 表示负(常规约定)。
  • 定点整数/定点小数:小数点位置固定但不占位。
  • 人为定义:补码/移码用某个“原本重复/无意义的编码”去表示最小负值,使编码更“满”。

🔍 表示范围与编码个数(必背表)

设字长为 N 位(含1位符号位)

A) 定点整数

码制可表示范围(真值)可表示个数
原码/反码-(2(N-1)-1) ~ +(2(N-1)-1)2N - 1(+0/-0重复)
补码/移码-2(N-1) ~ +(2(N-1)-1)2N

B) 定点小数(纯小数)

题干如果说“尾数是定点小数”,常用这个范围。

码制可表示范围(真值)
原码/反码-(1 - 2-(N-1)) ~ +(1 - 2-(N-1))
补码/移码-1 ~ +(1 - 2-(N-1))

🧩 联想扩展(常和码制一起考)

  • 进制转换 + 读码:先把十六进制转二进制(4位一组),再按补码/移码规则读真值。
  • 浮点数:阶码常用移码(方便比较大小),尾数常用补码(方便运算)。
  • 溢出:补码加法丢弃最高进位;真正是否溢出要看符号变化规则(同号相加异号则溢出)。

🧪 例题(按难度)

简单(3题)

单选
在有符号数表示中,哪类码制会出现“+0”和“-0”两种编码?

例题1(范围题)

单选
采用 N 位补码(含 1 位符号位)表示定点整数,可直接表示的真值范围是:
单选
8 位补码表示的定点整数中,最小负数对应的编码是:

中级(3题)

例题2(综合:进制 + 补码读码,课堂真题风格)

填空
若某 2X 的补码以十六进制给出为 90H(8位字长),求 X 的真值。

例题3(定点小数范围)

单选
9 位二进制定点小数(含 1 位符号位)用补码表示,则其真值范围是:
填空
将十进制 `-13` 表示为 8 位二进制补码(可用二进制或十六进制作答)。

困难(1题)

单选
在 8 位补码中计算:`0111 1111 + 0000 0001`。下列判断正确的是:

📚 本课小结

  • 原码/反码:直观但存在 +0/-0,运算不友好
  • 补码:计算机加减运算核心,范围更“满”(-2(N-1) 可取到)
  • 移码:常用于浮点阶码,便于大小比较
  • 高频考法:范围/个数 + 进制转换 + 读码(补码/移码)综合