计算机组成原理第 2 章:数据的表示和运算总览

这一页只负责导航,不装内容。每个节号点进去就是那一节的完整讲义。

第 2 章回答两个问题:一串二进制位怎样才代表一个数,以及硬件怎样对这些位做运算。

主线是一条被”位数有限”这一约束推着走的链条:

位怎么写(2.1.1)→ 符号怎么编,让减法消失(2.1.2)→ 落到真实机器和 C 语言(2.1.3、2.1.4)→ 加法器怎么造、怎么变快(2.2.1)→ 移位这个最便宜的运算(2.2.2)→ 加减与溢出判定(2.2.3)→ 乘除只能迭代(2.2.4)→ 定点的范围精度矛盾解不开,改用浮点(2.3.1)→ 浮点加减多出来的四步(2.3.2)→ 落到 C(2.3.3)→ 最后放进内存(2.3.4)

贯穿全章有两条隐线,值得单独盯住:

① “有符号还是无符号”是解释的属性,不是数据的属性。 硬件里只有一串位、一个加法器;区别只发生在五处(溢出判据、比较、右移、除法、扩展)。

② 每一次提速都是”面积换时间”。 先行进位加法器、桶形移位器、阵列乘法器是同一个设计哲学的三次应用;到第 5 章的流水线、第 3 章的 Cache 还会再遇到。

章节导航

2.1 数制与编码 ✅

节页面一句话
2.1.1进位计数制及其相互转换小数转换可能不终止;判据是能否写成 ——浮点误差的源头
2.1.2定点数的编码表示补码的两种理解:模运算解释减法消失,权值解释符号位可参与运算
2.1.3整数的表示有符号与无符号是同一串位、同一个加法器,区别只在五处
2.1.4C 语言中的整数类型及类型转换扩展补什么由源类型决定;同宽度混合时无符号”传染”

2.2 运算方法和运算电路 ✅

节页面一句话
2.2.1基本运算部件加法的瓶颈是进位链;先行进位用面积换时间
2.2.2定点数的移位运算两个判据:空位补什么 + 移出位去哪;算术右移向负无穷取整
2.2.3定点数的加减运算CF 服务无符号、OF 服务有符号;溢出三种判据等价
2.2.4定点数的乘除运算Booth = “连续 1 段换成一加一减”;除法是唯一会触发异常的定点运算

2.3 浮点数的表示与运算 ✅

节页面一句话
2.3.1浮点数的表示IEEE 754 偏置是 ;阶码全 0 时指数取 而非
2.3.2浮点数的加减运算溢出只看阶码;右规至多一次、左规可能多次
2.3.3C 语言中的浮点数类型int→double 精确,int→float 会丢精度
2.3.4数据的大小端和对齐存储大小端与对齐正交;大小端只作用于多字节标量内部

本章高频边界

边界判据在哪
进制 vs 编码同一位串在不同编码下是不同的数2.1.1
容量 K/M/G vs 速率 K/M/G 还是 ,看是否由位数决定2.1.1
原码 / 反码 / 补码 / 移码零唯一吗、符号位能否参与运算、范围是否对称2.1.2
四种求补码的方法取反含不含符号位2.1.2
有符号 vs 无符号五处区分:溢出判据 / 比较 / 右移 / 除法 / 扩展2.1.3
回绕 / 溢出 / 未定义行为三个层面的概念,不能混叫2.1.3
零扩展 vs 符号扩展由源类型决定,与目标无关2.1.4
值转换 vs 位型重解释(int)f vs *(int*)&f2.1.4
串行进位 vs 先行进位延迟 vs 组内恒定,代价是扇入2.2.1
逻辑移位 vs 算术移位补 0 还是补符号位2.2.2
算术左移 vs 逻辑左移位串相同,判溢出不同2.2.2
算术右移 vs C 的除法向负无穷 vs 向零,负数不整除时差 12.2.2
CF vs OF进位是”装不下”,溢出是”符号被改变”2.2.3
双符号位 01 / 10高位是真符号,低位是表面符号;01 上溢2.2.3
原码乘 vs 补码乘部分积逻辑右移 vs 算术右移2.2.4
恢复余数 vs 加减交替加回除数 vs 下轮改为加2.2.4
整数除 0 vs 浮点除 0异常 vs 2.2.4
IEEE 754 偏置 vs 教材移码偏置 vs 2.3.1
规格化 vs 精确规格化只管编码唯一2.3.1
尾数溢出 vs 浮点溢出浮点溢出只看阶码2.3.2
左规 vs 右规右规至多一次;左规可能多次且危险2.3.2
int→float vs int→double24 位 vs 53 位有效位2.3.3
大小端 vs 边界对齐字节次序 vs 起始地址,两者正交2.3.4

计算模板

题型步骤
进制转换整数除基取余、逆序;小数乘基取整、顺序; 以小数点为中心分组
求补码手算用扫描法(第一个 1 及右边照抄,左边取反);求相反数用连符号位全取反加 1
判溢出① (最快)② 同号相加结果异号 ③ 双符号位不同
Booth 乘法附加 → 看相邻两位(01 加 / 10 减 / 其余不动)→ 算术右移 → 共 轮
加减交替除法余数 商 1、下轮减;余数 商 0、下轮加;末轮余数为负要加一次除数校正
IEEE 754 编码① 转二进制 ② 规格化成 ③ ④ 取尾数 23 位,不足补 0、超出舍入
IEEE 754 解码① 按 1/8/23 拆字段 ② 先判五类中的哪一类 ③ 再套对应公式
浮点加减对阶(小向大)→ 求和 → 规格化 → 舍入 → 判溢出(只看阶码)
跨存储字数,等于访存次数
结构体大小逐成员按对齐要求补填充;总大小是最大成员对齐要求的整数倍

复习顺序

  1. 2.1.1:只需抓两点——小数转换可能不终止(浮点误差的源头)、位数与状态数(后面每章都要用)。
  2. 2.1.2:本章地基。补码的两种解释都要会:模运算解释”减法为什么消失”,权值解释”符号位为什么能参与运算”。四种求补码的方法要能分清取反含不含符号位。
  3. 2.1.3 → 2.1.4:把编码落到 C。核心是**“硬件不区分有无符号”这一句**,以及它导出的五处区分。类型转换的三个动作(重解释 / 扩展 / 截断)要分开记。
  4. 2.2.1:抓进位链是瓶颈这一条主线,先行进位的式子要能自己展开一遍。
  5. 2.2.2:两个判据先立住,再记三类移位的补位表。算术右移与 C 除法的取整方向差异必考。
  6. 2.2.3:本章计算题主战场。三种溢出判据、四个标志位要熟练;那张”同一次加法的两种解释”的表建议默写一遍。
  7. 2.2.4:Booth 的判断表必须能背,原理(连续 1 段换成一加一减)理解了就不会记反。加减交替法注意末轮校正。
  8. 2.3.1:本章第二个重点。五类编码先判类别再套公式;偏置 、非规格化数指数 这两处极易失分。
  9. 2.3.2:五步流程按顺序记,“溢出只看阶码”是第一考点。理解左规为什么危险。
  10. 2.3.3 → 2.3.4:收尾。2.3.3 的恒等式判断表建议整张记住;2.3.4 的四条否定(大小端不改位序 / 不改数组顺序 / 不影响 char / 不改寄存器数值)要能立刻答出。

说明

  • 本章 12 页对应教材的 12 个三级节,一节一页。 节号以 王道 2026 教材目录(权威参照)为准。
  • 旧版三篇笔记已归档(见 归档说明(本地资料))。归档前逐篇复核,发现旧笔记的节号有三处错误:把 BCD 码编为 2.1.2、把 IEEE 754 编为 2.3.2、把除法单列为 2.2.5。这三处在本次重构中已按权威目录更正。
  • 本章对话素材极少(109 条提问中仅 5 条),原因见 提问档案的说明(本地资料)。其余各节按教材独立撰写,完整性不受影响。

链接

  • 📖 名词库:第 2 章名词库(77 条 + 高频范围限定清单)
  • 📜 原始提问档案:第 2 章 原始提问档案(本地资料)(5 条)
  • ➡️ 下一章:第 3 章:存储系统
  • 🏗️ 重构施工文档:OS + 计组 笔记体系重构计划(本地资料)