浮点数的四则运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
❖X-Y的结果需要右规,将尾数右移1位,阶码加1,得:[X-Y]浮 =0011;00100010,阶码未超出+Emax,∴未溢出
6
4)舍入 ❖由于X+Y是左规,结果不需要舍入; ❖X-Y为右规,若采用末位恒置1法,则
[X-Y]浮=0011;00100011。 ❖若采用0舍1入法,则结果相同。
7
2.7.2 浮点乘除运算
11
例 设不含阶符的阶码位数n=4,Ex=-1010,Ey=+ 0111,求[Ex±Ey]移。
解: [Ex]移 =000110,[Ey]补 =000111, [-Ey]补 =111001
[Ex+ Ey ]移=[Ex]移 + [Ey]补 =000110+000111= 001101,Ex+ Ey=-0011;
解:先将两浮点数表示为规格化的浮点数: [X]浮=00 01;00 110101 [Y]浮=00 10;11 010110
1)对阶 求阶差△E=0001补-0010补=1111补=-1 Ex<Ey,按小阶对大阶原则,X的尾数右移1位,阶码加1,尾 数舍入采用末位恒置1法,则: [Xห้องสมุดไป่ตู้浮=00 10;00 011011
• 当结果尾数出现01.××…×或10.××…×时,需右 移一位,并使阶码加1,这个过程称为右移规格化, 简称右规。
• 当结果尾数出现00.0××…×或11.1××…×时,需 要进行左移规格化处理,简称左规。左规时尾数左 移一位,阶码减1。
3
浮点加减运算(续)
右规和对阶操作时尾数右移,需要进行舍入处理。 计算机中的舍入方法: ❖ 截断法:
同理: [Ex]移 + [-Ey]补 = [Ex-Ey ]移(mod 2n+1 )
10
采用双符号位进行运算。 设移码的双符号位为Sf1 Sf2,并规定运算初始时,移码 的第一符号位Sf1 恒用0表示(与双符号位补码不同)。
移码加减运算的溢出判断方法是: Sf1 Sf2=00,结果为负,无溢出; Sf1 Sf2=01,结果为正,无溢出; Sf1 Sf2=10,结果上溢; Sf1 Sf2=11,结果下溢;
9
由于补码和移码的数值位相同,符号位相反,因 此可以将移码和补码混合使用,即利用X的移码和Y的 补码之和来表示X+Y的移码。
[Ex]移 + [Ey]补 =2n+ Ex + 2n+1 + Ey =2n+1 + (2n + (Ex + Ey)) = 2n+1 + (Ex + Ey)移 = [Ex + Ey ]移(mod 2n+1 )
8
例 已知 [Ex]移=10010,[Ey]移=01000,求[Ex+Ey]移。 解:因为[Ex]移+ [Ey]移= 10010+01000=11010 将符号位取反得:[Ex+Ey]移=01010 例 已知 [Ex]移=00110,[Ey]移=11011,求[Ex+Ey]移。 解:因为[Ex]移 + [Ey]移 = 00110+11011=00001 将符号位取反得:[Ex+Ey]移=10001
错处理; 2.阶码相减并判溢出;
若Ex-Ey<-Emax,产生下溢,结果为0。 若Ex-Ey>Emax,产生上溢,作溢出处理。 3.尾数相除 4.规格化处理
14
尾数右移后,应进行舍入。
■ 例题
2、 尾数求和(差) 完成对阶后,按定点小数补码加减法运算规则求 两数和(差)。一般采用变形补码。例题
2
浮点加减运算(续)
3、结果规格化和判溢出
例题
如果尾数采用双符号位的补码表示,则正数规格 化形式为00.1××…×,负数规格化形式为 11.0××…×。
规格化处理规则是:
2.7 浮点数的四则运算
主要内容:
• 浮点加减运算 • 浮点乘除运算
2.7.1 浮点加减运算
1、对阶 ■ 规则:小阶对大阶。
原因:舍去尾数低位,产生误差;若丢失尾数高位,必 然导致错误。
■ 方法:求阶差。
阶差=0,不需对阶; 阶差≠0,小阶码数的尾数右移,右移次数为阶差的绝 对值,其阶码加上阶差的绝对值。
阶码一般用补码或者移码表示。
若阶码用移码表示,则根据移码的定义可知: [Ex]移 + [Ey]移 = 2n + Ex + 2n + Ey
= 2n + (2n + Ex + Ey) = 2n + [Ex + Ey]移 若直接用移码求阶码之和,结果比两数之和的移码多 了2n,即最高位上多加了一个1. 所以,要求两数和的移码,必须将两数移码之和的最 高位(符号位)取反。
5
2)尾数求和(差) 00011011
00011011
+ 11010110
+ 00101010
11110001 即[X+Y]浮=0010;11110001
01000101 即[X-Y]浮=0010; 01000101
3)结果规格化及判溢
❖X+Y的结果是非规格化的数,需左规。因此将结果尾数左移两 位,阶码减2,得 [X+Y]浮=0000;11000100, 阶码未超出-Emax,∴无下溢
若Ex+Ey<-Emax,产生下溢,结果为0。 若Ex+Ey>Emax,产生上溢,作溢出处理。 3.尾数相乘 4.规格化处理
13
二、浮点除法运算
设两个浮点数为:X=Mx·2Ex,Y=My·2Ey 则:X/Y=(Mx/My)·2(Ex-Ey) 浮点除法运算的步骤: 1. 检测被除数,若为0 ,则商为0;若除数为0,则作出
•将移出的数据一律舍去。该方法简单,但影响精度;
❖ 0舍1入法:
•移掉的是1,则尾数末位加1,移掉的是0,则不加。
❖ 末位恒置1法:
•将欲保留的末位数据恒置1,无论右移掉的是1还是0,也无 论此时末位是1还是0。
❖ 例题
4

❖例:若X=0.110101×2+01,Y=-0.101010×2+10, 求X+Y,X-Y的浮点数。设其浮点数格式为:阶码4位,双符号、 补码表示;尾数8位,双符号、补码表示。
[Ex- Ey ]移=[Ex]移 + [-Ey]补 =000110+111001= 111111,结果出现下溢出.
12
2.7.2 浮点乘除运算
一、浮点乘法运算 设两个浮点数为:X=Mx·2Ex,Y=My·2Ey 则:X·Y=(Mx·My)·2(Ex+Ey) 浮点乘法运算的步骤: 1.乘数判0,若有一乘数为0 ,则积为0,无需运算; 2.阶码相加并判溢出;
相关文档
最新文档