计算机组成原理 - 思维导图https://www.mubucm.com/doc/6PgA7liG4DO
-
- 2.1 数制与编码
- 2.1.1 进位计数制的相互转换
- 二进制 -> 八/十六进制
以小数点为界,3位/4位一组
- 任意进制 -> 十进制
各位数码与其权值相乘,再求和
(K_nK_{n-1}···K_0K_{-1} ···K_{-m})(KnKn−1⋅⋅⋅K0K−1⋅⋅⋅K−m)(K_nK_{n-1}···K_0K_{-1} ···K_{-m})(KnKn−1⋅⋅⋅K0K−1⋅⋅⋅K−m)
\sum\limits_{i=n}^{0} K_ir^i + \sum\limits_{i=-1}^{-m}∑i=n0Kiri+∑i=−1−m\sum\limits_{i=n}^{0} K_ir^i + \sum\limits_{i=-1}^{-m}i=n∑0Kiri+i=−1∑−m
- 十进制 -> 任意进制
整数部分采用除基取余
小数部分采用乘基取整
- 二进制 -> 八/十六进制
- 2.1.2 定点数的编码
- 机器数的定点表示
- 定点小数
- 定点整数
- 原码:整数符号位 0,负数符号位 1
真值 0 的原码正零与负零:0000, 10000000,10000000, 10000000,1000- 纯小数的原码
范围:2^{-n} - 1 \leqslant x \leqslant 1 - 2^{-n}2−n−1⩽x⩽1−2−n2^{-n} - 1 \leqslant x \leqslant 1 - 2^{-n}2−n−1⩽x⩽1−2−n
- 纯整数的原码
范围:1-2^{n} \leqslant x \leqslant 2^{n} - 11−2n⩽x⩽2n−11-2^{n} \leqslant x \leqslant 2^{n} - 11−2n⩽x⩽2n−1
- 纯小数的原码
- 补码:正数同原码,负数取反+1
真值 0 的补码是唯一的
补码的加减运算可统一采用加法实现
注:负数取反加1时- 纯小数的补码
范围:-1\leqslant x \leqslant 1 - 2^{-n}−1⩽x⩽1−2−n-1\leqslant x \leqslant 1 - 2^{-n}−1⩽x⩽1−2−n
- 纯整数的补码
范围:-2^{n} \leqslant x \leqslant 2^{n} - 1−2n⩽x⩽2n−1-2^{n} \leqslant x \leqslant 2^{n} - 1−2n⩽x⩽2n−1
- 纯小数的补码
- 反码:正数同原码,负数取反
三码合一:正数的原码、补码、反码
真值 0 的反码不唯一
- 移码:补码符号位取反
移码中 0 唯一
移码和补码只差符号位
移码全0最小,全1最大
- 原码、补码、反码、移码总结
- 原码、补码、反码的符号位相同,正数三码合一
- 原码、反码在数轴上对称,有 +0、-0
- 补码、移码在轴上不对称,0 唯一
- 整数的补码、移码的符号位相反,数值位相同
- 负数的补码、反码末尾相差1
-
- 2.1.3 整数的表示
- 无符号整数的表示
- 带符号整数的表示
- 2.1.1 进位计数制的相互转换
- 2.2 运算方法、运算电路
- 2.2.1 基本运算部件
- 一位全加器
- 串行加法器
- 串行进位加法器
- 并行进位加法器
- 并行加法器的优化
- SN74181 芯片
- 2.2.2 定点数的移位运算
- 算术移位:可用与乘法运算
- 原码 的左移、右移
- 左移 :补 0000,相当于 \times2×2\times2×2;舍弃位\ne0≠0\ne0=0,严重误差
- 右移: 补 0000,相当于\div2÷2\div2÷2;舍弃位\ne0≠0\ne0=0,丢失精度
- 反码 的左移、右移
- 正数:与原码移位操作相同
- 负数:左移补 1111,右移补 1111,
- 补码 的左移、右移
- 正数:与原码移位操作相同
- 负数:左移(同原码) 补 0000,右移(同反码) 补 1111
- 负数补码 规律:最右的1往右,同原码
- 原码 的左移、右移
- 逻辑移位:可用于存储 RGB 值
视作无符号数,逻辑 左移补 0000,右移补 0000
- 循环移位:可转换大小端存储
移动时进行循环补位- 大循环:带进位标志位CF
- 小循环:不带进位标志位
- 算术移位:可用与乘法运算
- 2.2.3 补码的加减法运算
- [-A]_补 \to [A]_补[−A]补→[A]补[-A]_补 \to [A]_补[−A]补→[A]补:所有位(符号、数值)取反+1+1+1+1
最右边 的1111,往左的所有位取反,往右的不变
- 负数 补码 \to→\to→ 原码 的快速转换
最右边 的1111,往左的数值位取反,往右的不变
- 溢出判断
- 上溢:正 + 正 = 负
- 下溢:负 + 负 = 正- 1. 采用单符号位,由溢出逻辑表达式判断
- 2. 采用单符号位,根据数据进位情况判断
- 3. 采用双符号位
- 符号扩展
- [-A]_补 \to [A]_补[−A]补→[A]补[-A]_补 \to [A]_补[−A]补→[A]补:所有位(符号、数值)取反+1+1+1+1
- 2.2.4 原补码的乘法运算
- 原码的一位乘法 (机算)
- 原码的一位乘法 (手算)
- 补码的一位乘法 (机算)
- 补码的一位乘法 (手算)
- 2.2.4 原补码的除法运算
- 原码除法:恢复余数法
- 原码除法:加减交替法
- 补码除法:加减交替法
- 2.2.5 C 语言的整数类型
- 有符号数和无符号数的转换
- 不同字长正数之间的转换
- 2.2.6 数据的存储和排列
- 大端存储 小端存储
- 数据的边界对齐
- 2.2.1 基本运算部件
- 2.1 数制与编码
-
- 2.3 浮点数的表示、运算
- 2.3.1 浮点数的表示
- 浮点数的左规:左移后,阶码 -1−1-1−1
- 浮点数的右规:右移后,阶码 +1+1+1+1
- 2.3.2 浮点数的加减
- 1. 对阶
- 2. 尾数求和
- 3. 规格化
- 4. 舍入
- 5. 溢出判断
- 2.3.1 浮点数的表示
- 2.3 浮点数的表示、运算