观前提示:该笔记系列内容适合复习以及在之前了解过计组、有一定基础的来进行观看,倘若您天资聪颖,可自动忽略这句话。
本篇笔记整理:Code_流苏(CSDN)
0.思维导图(自制)
①思维导图下载
自制思维导图文件(可下载后打开编辑.Xmind文件) 第3章 3.7——浮点数加减运算
提取码请见评论
②图示
1.规格化浮点数的概念
-
由于浮点数是将数据的表示范围与精确度分别表示的数据表示方法,若不对浮点数的表示作出明确规定,同一个浮点数的表示就
不唯一
; -
规格化浮点数是指把一个浮点数按指定的
格式
进行转换; -
以浮点数一般格式为例,规格化浮点数的尾数形式为:00.1Φ…Φ 或 11.0Φ…Φ。
2.浮点数规格化方法
- 当尾数结果为 00.0Φ…Φ 或 11.1ΦΦΦΦ,需要左规格化即将尾数向左移动,每移动一次,阶码减1,直到尾数形式为 00.1Φ…Φ 或 11.0Φ…Φ。
- 当尾数的结果为 01.Φ…Φ 或 10.ΦΦΦΦ, 表明尾数求和的结果 > 1,此时仅需要执行一次右移规格化,
阶码加 1
,尾数形式即为00.1Φ…Φ 或 11.0Φ…Φ。
3.浮点数加减运算方法及步骤
设 x = 2^(Ex) • Mx y = 2^(Ey) • My
则: x + y = (2^(Ex-Ey) • Mx + My ) × 2^(Ey) (Ey ≥ Ex)
- ①对阶:
a.求阶差;
b.右移
阶码小的浮点数的尾数并同步增加
其阶码,直至两数阶码相等
。
⬇ - ②尾数加/减:尾数
加/减
运算 (用对阶后的尾数)
⬇ - ③结果规格化
⬇ - ④舍入:
右移规格化时可能丢失
一些低位的数值位, 为提高精度, 可采取舍入的方法:
a.0 舍 1 入
: 若右移出的是1则在最低位加1;
b.恒置 1
: 只要数字位1被移掉,就将最后一位恒置成1。
⬇ - ⑤溢出处理:
浮点数的溢出标志
: 阶码溢出
a.阶码上溢 : 阶码的符号位为 01
b.阶码下溢: 阶码的符号位为 10
4.浮点数加减运算举例
例1: 设 x = 2^(010) × 0.11011011 y = 2 ^(100) × (- 0.10101100) 求 x+y。
解: 先用补码形式表示x 和 y
[X]补 = 00 010 , 00.11011011
[Y]补 = 00 100 ,11.01010100
(1) 对阶
[ΔE]补 =[Ex]补 + [ - Ey]补 = 00010 + 11100 = 11 110
∴ ΔE = – 2 x 的阶码 小于 y 的阶码
将x 的尾数向右移动2位
,同时阶码加 2 ,对阶后的 x 为:
[X]补 = 00 100 , 00.0011011011
(2)尾数运算
00.00110110 11
+11.01010100
————————
11.1000101011
(3) 尾数规格化处理
分析发现,只左移一次即可达到规格化要求。规格化后的结果为:
[X+ Y]补=00 011 ,11 . 000101011
(4) 舍入( 0 舍 1入)
在结果尾数的最低位加1
,最后的结果为:
[X+ Y]补= 00 011 ,11. 00010110
X+Y = – 0.11101010 × 2^(011)
例2: 浮点数加减运算过程一般包括对阶、尾数运算、规格化、舍入和判溢出等步骤。设浮点数的阶码和尾数均采用补码表示,且位数分别为5位和7位(均含2位符号位)。若有两个数X=27×29/32,Y=25×5/8,则用浮点加法计算X+Y的最终结果是:
A.00111 1100010 B.00111 0100010
C.01000 0010001 D. 发生溢出 (✔)
解题思路:
a.X= 2 00111 × 0.11101; Y = 2 00101 × 0.101 ;对阶后大的阶码为00111
;
b.位数相加后的结果为:01.00010
;
c.尾数需右移规格化,同时阶码加1后变成 01 000
。
本篇笔记整理:Code_流苏(CSDN)
笔记内容学习资料:计算机组成原理微课版(谭志虎、秦磊华等编著)
课件资料及视频学习:MOOC计算机组成原理(华中科大)
计算机组成原理专栏——笔记及测验练习都在这
如果对大家有帮助的话,希望大家能多多点赞+关注!这样我动力会更足哦! ღ( ´・ᴗ・` )比心。