第03章 3.5 浮点数的运算方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Y阶码小,MY右移1位,阶码为11.10。
[MY]补=00. 01010(舍去)
11/17 11
(2) 尾数相减 [MX]补+[-MY]补 =00.1100+11.1011=00.0111
(3) 规格化操作 左规,移1位,结果=00.1110; 阶码-1,E=11.01。 (4) 舍入 步骤(1)中已经处理。 (5) 判溢出 阶码符号位为11,故不溢出, 最终结果为:X-Y=2-11· 0.1110。

将阶码小的数的尾数右移ΔE位,阶码加ΔE。 原码表示的尾数右移时,符号位不参加移位, 尾数数值部分的高位补0。 补码表示的尾数右移时,符号位参加右移, 并保持原符号位不变。
4/17 4


(2)尾数相加/减:尾数进行定点加/减运算。 (3)结果规格化:将运算结果转变成规格化数。 ① 若结果的两个符号位不同,表示结果溢出, 此时应“向右规格化”(“右规”),将尾 数 结果右移1位,阶码+1。 ② 若结果的两个符号位相同,表示尾数结果 不溢出。但若最高数值位与符号位相同, 此来自百度文库应“向左规格化”(“左规”),将尾 数 连续左移,每左移15/17 位,阶码-1,直到最高
(1) 检测操作数是否为0,并置结果数符( ).
(2) 加阶:两数阶码相加,得积的阶码。 (3) 两数的尾数做定点乘法,得积的尾数。 (4) 尾数规格化。
(5) 舍入。 (6) 判断阶码是否溢出。 (阶码运算、尾数规格化时都可能溢出)
16/17 16
三、浮点数的除法运算 X÷Y=(MX÷MY)· 2EX-EY
下划线上的数是右移出去而保留的附加位。
9/17 9
(2) 尾数相加
[MX]补+[MY]补 =00.0011011011+11.01010100=11.10001010 11
(3) 规格化操作
左规,移1位,结果=11.00010101 10; 阶码-1,E=00011。
(4) 舍入(0舍1入)
附加位最高位为1,在结果的最低位+1,得新结果: [M]补=11.00010110, M=-0.11101010。
1.0011 1.0010
舍入后产生了误差,但误差值小于末位的权值。
7/17 7
(5)检查阶码是否溢出:
★ 阶码溢出表示浮点数溢出。
★ 在规格化和舍入时都可能发生溢出, 若阶码正常,加/减运算正常结束。 若阶码下溢(10),则置运算结果为机器零。 若阶码上溢(01),则置溢出标志,机器停止。

● ●
5
(4)舍入: 在执行右规或对阶时,尾数低位上的数值会 移掉,使精度受到影响。处理方法有:
★ 截断处理(舍弃)(处理简单,但影响精度)
★ 舍入处理 只要尾数最低位为1,或移出去的几位中有1, 就把尾数的最低位置1,否则保持原有的0值。 最低位恒置1的方法 0舍1入法(常用)(多进行一次加法运算)
● ● ●

阶码的定点运算
运算结果的规格化
2/17 2

一、浮点数的加减法运算
设有两浮点规格化数X、Y,实现X±Y运算, 其中:X=MX· 2EX; Y=MY· 2EY。 运算过程分为下面5步:
3/17
3
(1)对阶:使两数阶码相等。 ★ 求ΔE=EX-EY; ★ 若ΔE=0,不需要对阶; ★ 若ΔE≠0,阶码小的数向阶码大的数对齐。
[MX]补=00 .00 110 110 11
下划线上的数是右移出去而保留的附加位。
14/17 14
(2) 尾数相加
[MX]补+[MY]补 =00.0011011011+11.01010100=11.10001010 11
(3) 规格化操作
左规,移1位,结果=11.00010101 10; 阶码-1,E=01100+11111=01011。(+3)
6/17
6
★ 例如(0舍1入法) 设有5位数(其中有一附加位),用原码或补 码表示,舍入后保留4位结果。 [X]原=0.11011 [X]原=0.11100 [X]补=1.00101 [X]补=1.00100 舍入后[X]原= 舍入后[X]原= 舍入后[X]补= 舍入后[X]补= 0.1110 0.1110
17/17 17
12/17 12
移码运算:
[X+Y]移=[X]移+[Y]补 [X-Y]移=[X]移+[-Y]补 双符号位: 00 ~ 负数,无溢出 01 ~ 正数,无溢出 10 ~ 上溢 11 ~ 下溢 溢出条件:最高符号位为1
13/17 13
例如:已知 X=2010· 0.11011011, Y=2100· (-0.10101100) ,求X+Y。 (同上题,但改为阶用移码) 解: (1) 对阶 阶差ΔE=[EX]移+[-EY]补 =01010+11100=00110 (-2) X阶码小,MX右移2位,阶码取100。
(1) 检测操作数是否为0,并置结果数符( ). (2) 尾数调整:使|被除数尾数|<|除数尾数| (此步骤可以防止上溢) (3) 减阶(注意溢出):两数阶码相减得商的阶码。 (4) 两数的尾数做定点除法,得商的尾数。 ★ 结果不需要规格化,为什么? ∵ 操作数在运算前已规格化且做过尾数调整, ∴ 结果必是规格化的,也不会溢出。
3.5 浮点数的运算方法
★ 浮点数的表示形式(设以2为底):
N = M ·2E
其中:
M- 尾数(绝对值小于1的规格化小数)
(用原码或补码表示)
E- 阶码(整数)(用移码或补码表示)
1/17 1
★ 浮点运算中,阶码和尾数分别进行运算。

阶码:定点整数
尾数:定点纯小数

★ 浮点运算可归结为定点运算,但需增加:
8/17
8
例如:已知 X=2010· 0.11011011, Y=2100· (-0.10101100) ,求X+Y。 (尾数、阶码皆用补码表示) 解: (1) 对阶 阶差ΔE=[EX]补+[-EY]补 =00010+11100=11110 X阶码小,MX右移2位,阶码取100。
[MX]补=00. 00 110 110 11
(4) 舍入(0舍1入)
附加位最高位为1,在结果的最低位+1,得新结果: [M]补=11.00010110, M=-0.11101010。
(5) 判溢出
阶码移码符号位为01,故不溢出,最终结果为: X+Y=2011· (-0.11101010) 。
15/17 15
二、浮点数的乘法运算
X×Y=(MX×MY)· 2EX+EY
(5) 判溢出
阶码符号位为00,故不溢出,最终结果为: X+Y=2011· (-0.11101010) 。
10/17 10
练习:已知 X=+0.001100, Y=+0.000101 ,求X-Y(采用补码)。 解: X=2-10· 0.1100, Y=2-11· 0.1010 (1) 对阶 阶差ΔE=[EX]补+[-EY]补 =11.10+00.11=00.01
相关文档
最新文档