计算机组成原理第二章: 数据的机器级表示与处理 - 个人期末复习资料

提示词:

这是一份计算机组成原理课程的课件,我需要你帮我整理出一份期末考试复习资料,尽可能详细,这部分比较困扰我

声明:本文由ChatGPT 5.2 大模型生成!
个人仅做搬运处理!暂未对内容正确性进行检查!


这里写目录标题


下面给你整理一份**《计算机组成原理 · 第二章:数据的机器级表示与处理》期末复习资料(偏"考点 + 做题法")**。


1)本章你到底要掌握什么(按课件"重点难点")

课件明确的重点难点包括:进制转换、定点数原码/反码/补码、整数加减与溢出判断、补码乘法(Booth)、IEEE754 单精度转换、浮点加减运算过程


2)数据在机器里的"分类框架"(理解题常考)

机器里数据大类:

  • 数值数据:无符号整数、带符号整数(补码)、浮点数
  • 非数值数据 :逻辑数(位串)、ASCII/BCD 等字符编码
    课件强调:计算机内部所有信息最终都是 0/1 编码,并区分"真值 vs 机器数"的概念。

3)进制与编码(常规送分题)

3.1 进制转换(会做即可)

  • 十进制 → 二进制:整数"除 2 取余倒序";小数"乘 2 取整顺序"
  • 二进制 → 十六进制:4bit 一组
  • 常见要熟:210=1024,216=65536,2^31=2147483648

3.2 BCD 与 ASCII(会考概念/简单编码)

  • 8421 BCD:4 位表示 1 位十进制;压缩/非压缩 BCD 的区别(4 位 vs 8 位)。
  • ASCII:7 位编码,数字/大小写字母范围记忆(课件给了 0-9、A-Z、a-z 的十六进制区间提示)。

4)定点数表示(你必须非常熟)

定点数核心:小数点位置固定,常见两类:

  • 定点整数(小数点在最右)
  • 定点小数(小数点在符号位之后)

4.1 原码/反码/补码(带符号整数的核心是补码)

补码范围(必背)

n 位补码表示范围:

-2\^{n-1} \\le N \\le 2\^{n-1}-1

课件在范围表里给了例子(8 位:-128~127;16 位:-32768~32767)。

补码求相反数(必会)

"求 -X 的补码":按位取反 + 末位加 1(补码取负规则)。

4.2 变形补码(双符号位)------专门为"溢出判断/中间结果"服务

课件定义:变形补码是双符号位 Ss1、Ss2,用于存放可能溢出的中间结果(Ss1 为真符)。

考试常问:为什么要双符号位?

因为定点加减的中间结果可能超出 n 位补码范围,但在变形补码中能保留"符号与最高数值位",从而判断是否溢出。


5)定点数加减与溢出(高频大题)

5.1 补码加减基本规则(做题口诀)

  • 加法 :按位相加,最高位进位丢弃(模 2^n 运算系统)
  • 减法:A - B = A + (-B)(先求 B 的补码相反数再加)

5.2 溢出判断(你必须会三种说法,考试爱换问法)

方法A:同号加异号出 ⇒ 溢出(最常用)
  • 两个操作数符号相同,结果符号不同 ⇒ 溢出

    • 正 + 正 得负 ⇒ 正溢出
    • 负 + 负 得正 ⇒ 负溢出
方法B:符号位的"进位异或"判断(硬件视角)
  • 符号位的进位 Cin 与 符号位的进位 Cout 不同 ⇒ 溢出
    (老师如果讲过标志位 V,一般就是这个思想)
方法C:变形补码 Ss1/Ss2 判断
  • 若运算结果的两位符号 Ss1 与 Ss2 不相同 ⇒ 溢出
    (因为双符号位出现 01 或 10 代表符号发生不一致)

你现在复习时建议把 A 当主方法,C 用来"解释为什么能判断溢出"。


6)移位运算(定点乘除、对阶都会用)

课件强调补码移位规则(容易错):

  • 左移:相当于乘 2;右移:相当于除 2
  • 正数补码右移补 0;负数补码右移补 1(算术右移)
    课件分别给了正数/负数补码移位示例与易错点提示。

7)定点乘法(Booth 算法是核心考点)

7.1 为什么需要 Booth

普通"逐位加被乘数"的乘法在乘数连续 1 很多时效率低;Booth 把乘数按位差分,减少加法次数。

7.2 Booth 规则(必背表)

课件给了 Booth 一位乘法规则:看 (y_i, y_{i+1})(或等价看 (y_{i+1}-y_i))来决定操作:+X、-X 或不变。

7.3 Booth 做题流程(按寄存器 A、Q...来)

  1. 初始化:A=0;被乘数 X;乘数 Q;附加位(课件叫 C 或 Q-1)
  2. 每轮:观察末两位(Q0 与 Q-1),决定 A 加 X / 加 -X / 不变
  3. 算术右移(A、Q、附加位一起移)
  4. 重复 n 次
    课件给了完整例题步骤(X=-0.1101,Y=-0.1011)并给出最终乘积。

8)定点除法(知道"上商次数、溢出点")

课件小结里有很关键的"考试爱问点":

  • 补码除法上商 n+1 次(末位恒置 1),第一次为商符
  • 第一次上商可判溢出
  • 加 n 次、移 n 次,用移位次数判断结束
  • 精度误差最大约 (2^{-n})

还有一个容易出概念题:带符号整数除法一般不溢出,除了 (-2^{n-1}/(-1)) 会溢出(因为结果是 (2^{n-1}),超出正数最大值)。


9)浮点数 IEEE 754(你说最困扰的重点来了)

9.1 IEEE 754 单精度结构(SP,float)

  • 1 位 Sign
  • 8 位 Exponent(偏置 Bias=127)
  • 23 位 Fraction(有效数/尾数小数部分),规格化时有隐藏位 1

9.2 规格化数、非规格化数、0、∞、NaN(必背判定表)

课件把 SP 的分类规则写得非常清楚(指数与尾数组合决定对象类型):

  • Exponent=0、Fraction=0 ⇒ ±0
  • Exponent=0、Fraction≠0 ⇒ 非规格化数 Denorms(隐藏位为 0)
  • Exponent=1~254 ⇒ 规格化数 Norms(隐藏位为 1)
  • Exponent=255、Fraction=0 ⇒ ±∞
  • Exponent=255、Fraction≠0 ⇒ NaN

做题技巧:看到指数全 0 / 全 1,先别急着算值,先判断是不是 0/非规/∞/NaN。


10)浮点加减运算(期末最爱出的"过程题")

课件给出"基本要点"(你可以直接背成步骤模板):

10.1 浮点加减六步模板(强烈建议你背)

设 X=(Xm, Xe),Y=(Ym, Ye):

  1. 求阶差:Δe = Ye - Xe(通常让大阶作为结果阶)

  2. 对阶:小阶的尾数右移 |Δe| 位(保留右移出去的附加位)

  3. 尾数加/减:对齐后做尾数运算

  4. 规格化

    • 若高位为 0 ⇒ 左规:尾数左移、阶码减 1,直到 MSB=1 或阶码到最小(可能进入非规格化)
    • 若有进位 ⇒ 右规:尾数右移一次、阶码加 1,并检查上溢
  5. 舍入:尾数超位(有附加位)则按舍入方式处理

  6. 0 的特殊处理:若尾数为 0,阶码也置 0(保证表示成真正的 0)

10.2 课件例题(你要能复现)

0.5 + (-0.4375):

  • 对阶:-1.110×2^-2 → -0.111×2^-1
  • 尾数加减:1.000×2^-1 + (-0.111×2-1)=0.001×2-1
  • 左规:0.001×2^-1 → 1.000×2^-4
  • 结果:0.0625
    课件给了完整推导与结果。

10.3 "附加位 Guard/Round"为什么必须有(常考理解题)

课件用"沙堆"比喻说明浮点运算会丢精度,并明确:IEEE754 中间结果右侧要加 2 个附加位 Guard 与 Round,用于保护对阶右移丢掉的位,并作为舍入依据。


11)舍入(浮点题经常考最后一步)

IEEE 754 有四种舍入模式,默认是 round to nearest ,并且当"恰好一半"时采用 round to nearest even(就近取偶),课件写得很清楚:

  • 小于 1/2:截断
  • 大于 1/2:进 1
  • 等于 1/2:取最近偶数(减少统计偏差)

12)数据存储:大小端与对齐(概念题+小计算)

课件给了典型例子:字节编址下,一个 32 位 word 的 4 个字节如何放到地址中;并给出:

  • 大端 Big Endian:MSB 所在地址是数的地址
  • 小端 Little Endian:LSB 所在地址是数的地址(Intel 80x86 常见)

13)高频易错点(老师很爱拿来出判断/选择)

13.1 C 语言整数类型转换与比较陷阱

课件举了例子:同一段比较在 C90/C99 下结果不同,原因是常量类型推断与提升规则(Integer Promotion)。

13.2 浮点运算不满足结合律

课件给了非常经典的反例:x=-1.5×1038,y=1.5×1038,z=1.0

(x+y)+z = 1.0,但 x+(y+z)=0.0。


期末"最该刷"的题型清单(按得分效率排序)

  1. 补码/原码/反码互转(含范围、取负、符号扩展)
  2. 补码加减 + 溢出判断(三种判断法要会说会算)
  3. Booth 乘法步骤题(会写每轮 A/Q 的变化)
  4. IEEE754 单精度:真值 ↔ 机器数互转(含特殊值判断)
  5. 浮点加减过程题(对阶→加减→规格化→舍入→溢出/下溢)
  6. 大小端存储顺序(给地址写出字节排列)
相关推荐
万行2 天前
机器学习&第一章
人工智能·python·机器学习·flask·计算机组成原理
551只玄猫4 天前
数电实验3【译码器设计实验报告】数字电路 逻辑与计算机设计 logisim
数字电路·计算机组成原理·数电·实验报告·译码器·logisim
星火开发设计5 天前
Python数列表完全指南:从基础到实战
开发语言·python·学习·list·编程·知识·期末考试
星火开发设计6 天前
二叉树详解及C++实现
java·数据结构·c++·学习·二叉树·知识·期末考试
渡我白衣6 天前
计算机组成原理(13):多路选择器与三态门
开发语言·javascript·ecmascript·数字电路·计算机组成原理·三态门·多路选择器
小当家.1058 天前
操作系统期末考试基础知识点速成:高频考点与题集精要
考研·操作系统·计算机基础·速成·大学·期末考试
大模型铲屎官12 天前
【操作系统-Day 46】文件系统核心探秘:深入理解连续分配与链式分配的实现与优劣
人工智能·python·深度学习·大模型·操作系统·文件系统·计算机组成原理
大模型铲屎官12 天前
【操作系统-Day 47】揭秘Linux文件系统基石:图解索引分配(inode)与多级索引
linux·运维·服务器·人工智能·python·操作系统·计算机组成原理
星火开发设计16 天前
深度优先搜索(DFS)详解及C++实现
c++·学习·算法·计算机·深度优先·大学生·期末考试