计算机组成原理 此系列为王道计算机考研组成原理精细笔记
计算机组成原理-第二章(10)浮点数
- 计算机组成原理
- 一、浮点数的表示
-
- 1.1 为什么要使用浮点数
- 二、浮点数的表示
-
- 2.1 浮点数的表示格式
- 2.2 规格化浮点数
-
- 2.3.1 规格化
- 2.2.2 表示范围
- 2.3 IEEE 754标准
- 三、浮点数的运算
-
- 3.1 浮点数的加减运算与强制类型转换
- 3.2 强制类型转换
- 四、算术逻辑单元ALU与加法器(串行加法器、并行加法器、全加器)
-
- 4.1 电路基本原理
- 4.2 复合逻辑
- 4.3 异或、同或运算
- 4.4 ALU—算术逻辑单元
-
- 4.4.1 ALU需要提供的功能
- 4.4.2 ALU结构
- 4.4.3 ALU芯片的组织
- 五、加法器
-
- 5.1 一位加法器
- 5.2 串行加法器
- 5.3 并行加法器
-
- 5.3.1 串行进位的并行加法器
- 5.4 加法器优化
- 5.5 ALU芯片的优化
- 总结
一、浮点数的表示 1.1 为什么要使用浮点数 ??因为定点数可表示的数字范围有限,但我们不能无限制地增加数据的长度,这就是定点数的局限性,而浮点数就是为了解决这样一个问题。
??浮点数让小数点位置根据需要浮动,可以在位数有限情况下既扩大数的表示范围,又保持数的有效精度。
二、浮点数的表示 2.1 浮点数的表示格式 ??参考科学计数法理解,浮点数可表示为:N=rE * M,r是浮点数阶码的底(隐含,通常为2),E和M都是有符号的定点数,E为阶码,M为尾数。
??所以浮点数可以用二进制表示为阶码和尾数两部分的拼接。
文章图片
- 阶码是定点整数,阶符和阶码的数值部分位数m共同反映浮点数的表示范围和小数点的实际位置。
- 数符代表浮点数的符号。
- 尾数的位数n反映浮点数的精度。
- 规格化:类似科学计数法,规定位数的最高数位必须是一个有效值(即尾数最高位不为0),以充分利用空间,提高精度。
- 左规:将尾数算数左移一位,阶码减一(基数为2时),可能要进行多次。
- 右规:尾数溢出时使用,将尾数算数右移一位,阶码加一(基数为2时),只进行一次。
- r=2原码规格化后(最高数值位一定为1)
- r=2补码规格化后(规定符号位和最高数值位必须不一样)
- 两位符号位(小数点前两位11或00),是变形补码。补码的规格化表示是小数点后n位与符号位不同(n由基数决定,2的n次方为基数).例如基数为8。是2的3次方。每三位表示一个数,n等于3。故观察尾数前三位(小数点后三位):
- 对基数为8该题解答技巧:
① 当浮点数为正数时,数值位前三位不全为0时,是规格化数;
② 当浮点数为负数时,数值位前三位不全为1时,是规格化数;
文章图片
文章图片
- 运算结果大于最大正数时称为正上溢,小于绝对值最大负数时称为负上溢,正上溢和负上溢统称上溢。
数据一旦产生上溢,计算机必须中断运算操作,进行溢出处理。
- 当运算结果在0至最小正数之间时称为正下溢,在0至绝对值最小负数之间时称为负下溢,正下溢和负下溢统称下溢。
数据下溢时,浮点数值趋于零,计算机仅将其当作机器零处理。
文章图片
① IEEE 754标准的浮点数(除临时浮点数外),是尾数用采取隐藏位策略的原码表示,且阶码用移码表示的浮点数。(此处移码偏置值为2n-1,移码=真值+偏置值,相当于补码最高位取反)尾数部分隐藏表示最高位1,表示尾数1.M,具体如下图:三、浮点数的运算 3.1 浮点数的加减运算与强制类型转换
② 以短浮点数为例,最高位为数符位; 其后是8位阶码,以2为底,用移码表示,阶码的偏置值为28-1-1= 127; 其后23位是原码表示的尾数数值位。
③对于规格化的二进制浮点数,数值的最高位总是“1”,为了能使尾数多表示一位有效位,将这个“1”隐含,因此尾数数值实际上是24位。隐含的“1”是一位整数。
④ 在浮点格式中表示的23位尾数是纯小数。例如,(12)10= (1100)2, .
将它规格化后结果为1.1x23, 其中整数部分的“1”将不存储在23位尾数内。
文章图片
规则
文章图片
- 浮点数加减运算步骤:
① 对阶:小阶看大阶
② 尾数加减
③ 规格化
④ 舍入:零舍一入法或恒置一法
⑤ 判断溢出:先规格化再判断溢出,阶码溢出必溢出,尾数溢出或许可以通过3.4步操作挽救
文章图片
int转float(实际有效数字24位),可能有数据舍入四、算术逻辑单元ALU与加法器(串行加法器、并行加法器、全加器) 4.1 电路基本原理 ??说到电路基本原理,我们首要知晓的就是一些基本的数电模电基础:
int或float转double,能保留精确值
double转float,可能发生溢出和舍入
float转或double转int,可能会只保留整数部分,影响精度,可能发生溢出
文章图片
文章图片
- 基本逻辑运算
表达式 | 门电路 |
---|---|
Y = A B Y=AB Y=AB | 文章图片 |
Y = A + B Y=A+B Y=A+B | 文章图片 |
Y = A  ̄ Y=\overline{A} Y=A | 文章图片 |
优先级: 与 > 或 与>或 与>或4.2 复合逻辑
分配律: A ( C + D ) = A C + A D A(C+D)=AC+AD A(C+D)=AC+AD
结合律: A B C = A ( B C ) ABC=A(BC) ABC=A(BC)
结合律: A + B + C ? A + ( B + C ) A+B+C-A+(B+C) A+B+C?A+(B+C)
在这里逻辑表达式实际上是对电路的数学化描述,简化逻辑表达式可以简化电路。例如: A C + A D = A ( C + D ) AC+AD=A(C+D) AC+AD=A(C+D)
- 复合逻辑包括:
① 与非
② 或非
③ 异或
④ 同或
表达式 | 门电路 |
---|---|
Y = A B  ̄ Y=\overline{AB} Y=AB | 文章图片 |
Y = A + B  ̄ Y=\overline{A+B} Y=A+B? | 文章图片 |
Y = A ? B Y = A\bigoplus B Y=A?B | 文章图片 |
Y = A ? B Y=A\bigodot B Y=A?B | 文章图片 |
- A + B  ̄ = A  ̄ ? B  ̄ \overline{A+B}=\overline{A}\cdot \overline{B} A+B?=A?B
- A ? B  ̄ = A  ̄ + B  ̄ \overline{A\cdot B}=\overline{A}+ \overline{B} A?B=A+B
文章图片
4.4 ALU—算术逻辑单元 4.4.1 ALU需要提供的功能
文章图片
4.4.2 ALU结构
文章图片
4.4.3 ALU芯片的组织
文章图片
五、加法器 5.1 一位加法器
- 1.三个输入:加数 A i 、 B i A_{i}、B_{i} Ai?、Bi?和低位传来的进位 C i ? 1 C_{i-1} Ci?1?
2.两个输出:本位和 S i S_{i} Si?、向高位的进位 C i C_{i} Ci?
文章图片
5.2 串行加法器
- ① 只有一个全加器,逐位串行送入加法器进行运算
② 每次产生一位和,逐位送回寄存器
③ 若操作数长n位,则要进行n次运算
④ 器件小、成本低,但速度慢
文章图片
??串行进位的并行加法器就是把n个全加器串联起来,可以进行两个n位数的相加
文章图片
文章图片
最低位产生的进位将逐位影响到最高位:最长运算时间由进位信号的传递时间决定。
文章图片
5.4 加法器优化 ??优化思路:同时产生各级进位输出,即并行进位(先行进位,同时进位)
并行进位
文章图片
由于需要一次同时算出所有进位输出,无限套娃之后电路结构会越来越复杂,因此完全采用并行进位是不可行的。实际上,通常采用分组并行进位方式。5.5 ALU芯片的优化
分组并行进位把n位全加器分为若干小组(n位CLA加法器),小组内实行并行快速进位,小组间可实行串行或并行进位,因此又可进一步分为两种
单级先行进位方式
文章图片
多级先行进位方式
,需要对原来的CLA电路进行修改,得到BCLA(成组先行进位加法器)加法器。例如16位的两级先行进位加法器可由4个BCLA加法器和1个CLA电路构成。
文章图片
文章图片
文章图片
总结 【计算机组成原理|计算机组成原理-第二章(10)浮点数-整章】??下一章是存储系统,期待大家和我交流,留言或者私信,一起学习,一起进步!
文章图片
文章图片
文章图片
推荐阅读
- 搞笑整活系列|Python基础-“百钱百鸡”入门逻辑题(刚开始的建议藏起来)
- 计算机组成原理|计算机组成原理-第二章 数据表示与运算
- 开发过程中的常见问题|解决: protoc-gen-go unable to determine Go import path for “*.proto“
- 后端|Postman 使用 “status“: 415, “error“: “Unsupported Media Type“, “message“: “Content type ‘app
- C语言|【C语言】字符函数&字符串函数&内存函数(上)[进阶篇_复习专用]
- C语言|【C语言】字符函数&字符串函数&内存函数(下)[进阶篇_复习专用]
- CMPUT 204
- Short Description
- pygame|Python学习路线图(2022年最新版)