
浮点数的加法减法运算教学提纲.ppt
34页浮点数的加法减法运算•浮点数的加法、减法运算浮点数的加法、减法运算 设有两个浮点数的分别为X=Mx*2Ex,Y=My*2Ey,实现浮点加减法算的基本步骤分为四步完成: 0 0操作数检查操作数检查:用来判断两个操作数中是否有一个为0. 对阶操作对阶操作:即比较两个浮点数的阶码值的大小,求E=Ex-Ey,然后将小阶对大阶 尾数进行加或减运算尾数进行加或减运算:实现尾数的加减运算,执行两个完成对阶后的浮点数的求和(差)的过程 2.6.1 浮点加法、减法运算规格化规格化:若得到的结果不满足规格化规则,就必须把它变成规格化的数规格化规则:尾数的符号为01或10时,绝对值大于1,尾数右移1位,阶码+1尾数的符号为11或00时,补码表示的数往左移n位,将尾数移成1.0或0.1注意:在执行对阶或右规操作时,会使位数低位上的一位或若干位的数值被移掉,使数值精度受到影响,可以把移掉的几个高位的值保存起来供舍入使用浮点加减法运算浮点加减法运算舍入舍入(1) “0舍1入”法,即右移时丢掉的最高位为0,则舍去;是1,则将尾数的末位加1(相当于进入)2)“恒置1”法,即不管移掉的是0还是1,都把尾数的末位置1。
溢出处理溢出处理阶码最高位为00或11不溢出[E]补=01 XX…X为上溢,真正溢出,需做溢出处理[E] 补=10 XX…X为下溢,浮点数值趋于零,用机器零表示2.6.1 浮点加法、减法运算2.6.1 浮点加法、减法运算[ [例例2 25 5] ] 设设x x==2 22 2×0.11011011,y=-×0.11011011,y=-2 24 4×0.10101100×0.101011001、0操作数检查(非0)2、对阶:阶码对齐后才能加减规则是阶码小的向阶码大的数对齐;l若△E=0,表示两数阶码相等,即Ex=Ey;l若△E>0,表示Ex>Ey;l若△E<0,表示Ex>Eyl当Ex≠Ey 时,要通过尾数的移动以改变Ex或Ey,使之相等解解: :浮点表示为浮点表示为: : [X]浮浮= 00 010,,0. 11011011 [Y]浮浮= 00 100,,1. 01010100(1)对阶(1)对阶 原则原则: :小阶向大阶小阶向大阶•设设△E>0,△E>0,表表示示E Exx>E>Eyy,,则则移移动动y y的的尾尾数数,,M Myy右右移移△E△E位,问题:为什么要小阶向大阶看齐?位,问题:为什么要小阶向大阶看齐?•阶差阶差=Ex-Ey=00 010- 00 100 =11 110•即阶差为即阶差为-2,,Mx右移两位,右移两位,Ex加加2 [X]浮浮=00100, 0.00110110(11)+(2)尾数求和 0.00110110(11)1.01010100 1.10001010(11) ((3))规格化和舍入处理规格化和舍入处理 结果的符号位与最高符号数值位相同,应执行左规处理,所谓左规格化的规则,就是尾数左移1位,阶码减1,所以结果为1.00010101(10) ,阶码为00 011 舍入处理,采用0舍1入法处理,则有 1. 0 0 0 1 0 1 0 1 + 1 1. 0 0 0 1 0 1 1 0判溢出判溢出 阶阶码码的的符符号号位位为为0000,,不不溢溢出出。
所所以以最最终终的的结果为结果为:: X+Y=2 X+Y=2011011* *((-0.11101010-0.11101010)) 结果规格化l(1)在浮点加减运算时,尾数求和的结果也可以得到01.ф…ф或10.ф…ф,即两符号位不等,此时将运算结果右移以实现规格化表示,称为向右规格化l规则:尾数右移1位,阶码加1l(2)结果是00.0..01.....或11.1...10...时,则向左规格化l规则:尾数左移1位,阶码减1,直到规格化l右规,阶码加1,左规,阶码减1l例子中左规为11.00010101(10),阶码减1为00011l练习:01.1101 10.0001 11.1001l舍入处理(对阶和向右规格化时)l就近舍入(0舍1入):类似”四舍五入”,丢弃的最高位为1,进1l朝0舍入:截尾l朝+∞舍入:正数多余位不全为”0”,进1;负数,截尾l朝-∞ 舍入:负数多余位不全为”0”,进1;正数,截尾l溢出判断和处理l阶码上溢,一般将其认为是+∞和-∞ l阶码下溢,则数值为0l设[x1]补=11.01100000,[x2]补=11.01100001,[x3]补=11.01101000,[x4]补=11.01111001, 求执行只保留小数点后4位有效数字的舍入操作值。
课堂作业课堂作业•例例::设设X=2X=2001001* *((-0.111-0.111)),,Y=2Y=2010010*0. *0. 101101,,求求X-Y.(X-Y.(假假设设两两数数均均以以补补码码表表示示, ,阶阶码码采采用用3 3位位, ,尾数采用尾数采用4 4位,均包括符号位位,均包括符号位.).)+(2).尾数求差: [-Y]补=1.011 1 . 1 0 0 (1)1 . 0 1 11 0 . 1 1 1 (1)丢失1两个负数相加,结果为正数,说明产生了溢出.但是在浮点数的运算中,只有当阶码产生溢出时,才是溢出此时只是说明尾数的结果为不规格化数,应进行右规解解: :浮点表示为浮点表示为: : [X]浮浮=001,,1. 001 [Y]浮浮=010,,0. 101(1)对阶(1)对阶 [△△E]补补=[Ex]补补-[Ey]补补=001+110=111 即即△△E为为-1-1,,X的的阶阶码码小小,,应应使使Mx右右移移1 1位位,, Ex加加1,,得得: : [X]浮浮=010, 1.100((1)) (3).3).规格化和舍入处理规格化和舍入处理 由于结果产生了溢出,应执行右规处理,所谓右规格由于结果产生了溢出,应执行右规处理,所谓右规格化的规则,就是尾数右移化的规则,就是尾数右移1 1位,阶码加位,阶码加1 1,所以结果为,所以结果为1.011(1) 1.011(1) ,阶码为,阶码为011011 舍入处理舍入处理, ,采用恒舍法处理,则有尾数为采用恒舍法处理,则有尾数为1.0111.011 (4).判溢出判溢出 阶码不溢出。
所以最终的结果为阶码不溢出所以最终的结果为 X+Y=2 X+Y=2011011* *((-0.101-0.101))2.6.2 浮点乘法和除法运算浮点乘法和除法运算l设有两个浮点数x和y: x=2Ex·Mx y=2Ey·Mylx×y=2(Ex+Ey)·(Mx×My)lx÷y=2(Ex-Ey)·(Mx÷My)l乘除运算分为四步l0操作数检查l阶码加减操作l尾数乘除操作l结果规格化和舍入处理•浮点乘、除法的运算步骤:n浮点数的阶码运算 阶码通常用补码和移码形式表示对于移码来说:(课本的证明) [X+Y]移=[X]移+[Y]补 [X-Y]移=[X]移+[-Y]补 在用移码进行计算时,判断溢出的条件是当结果的最高符号位为1时,则产生了溢出2.6.2 浮点乘法和除法运算浮点乘法和除法运算2.6.2 浮点乘法和除法运算浮点乘法和除法运算l移码采用双符号位,为了对溢出进行判断l01 为正 00 为负l10 上溢 11 下溢x=+011,y=+110,求[x+y]移 和 [x-y]移,并判断是否溢出。
[x]移=01 011, [y]补=00 110, [-y]补=11 010[x+y]移=[x]移+[y]补=10 001, 结果上溢 [x-y]移=[x]移+[-y]补=00 101, 结果正确,为-3n浮点数的尾数处理第一种方法:无条件地丢掉正常尾数最低位之后的全部数值,这种方法称为截断处理第二种方法:运算过程中保留右移中移出的若干高位的值,最后按某种规则用这些位上的值修正尾数,这种处理称为舍入处理2.6.2 浮点乘法和除法运算浮点乘法和除法运算l尾数处理l截断l舍入* 尾数用原码表示时l只要尾数最低为1或者移出位中有1数值位,使最低位置1l0舍1入* 尾数用补码表示时§丢失的位全为0,不必舍入§丢失的最高位为0,以后各位不全为0时;或者最高为1,以后各位全为0时,不必舍入§丢失的最高位为1,以后各位不全为0时,则在尾数的最低位入1的修正操作2.6.2 浮点乘法和除法运算浮点乘法和除法运算 设有浮点数x=2-5×0.0110011,y=23×(-0.1110010),阶码用4位移码表示,尾数(含符号位)用8位补码表示求[x×y]浮要求用补码完成尾数乘法运算,运算结果尾数保留高8位(含符号位),并用尾数低位字长值处理舍入操作。
[解解:] 移码采用双符号位,尾数补码采用单符号位,则有 [Mx]补=0.0110011, [My]补=1.0001110, [Ey]移=01 011, [Ey]补=00 011, [Ex]移=00 011, [x]浮=00 011, 0.0110011, [y]浮=01 011, 1.0001110(1)判断操作是否为”0”,求阶码和[Ex+Ey]移=[Ex]移+[Ey]补=00 011+00 011=00 110, 值为移码形式-22) 尾数乘法运算可采用补码阵列乘法器实现,即有[Mx]补×[My]补=[0.0110011]补×[1.0001110]补 =[1.1010010,1001010]补(3) 规格化处理 乘积的尾数符号位与最高数值位符号相同,不是规格化的数,需要左规,阶码变为00 101(-3), 尾数变为 1.0100101,00101004) 舍入处理 尾数为负数,取尾数高位字长,按舍入规则,舍去低位字长,故尾数为1.0100101 最终相乘结果为 [x×y]浮=00 101,1.0100101 其真值为 x×y=2-3×(-0.1011011)2.6.2 浮点乘法和除法运算浮点乘法和除法运算l实现的逻辑框图AB尾数相加以及控制线路CC阶码加法器M2.6.3 浮点运算流水线浮点运算流水线1、提高并行性的两个渠道:l空间并行性:增加冗余部件,如增加多操作部件处理机和超标量处理机l时间并行性:改善操作流程如:流水线技术2.6.3 浮点运算流水线浮点运算流水线2、流水技术原理l在流水线中必须是连续的任务,只有不断的提供任务才能充分发挥流水线的效率l把一个任务分解为几个有联系的子任务。
每个子任务由一个专门的功能部件实现l在流水线中的每个功能部件之后都要有一个缓冲寄存器,或称为锁存器l流水线中各段的时间应该尽量相等,否则将会引起“堵塞”和“断流”的现象l流水线需要有装入时间和排空时间,只有当流水线完全充满时,才能充分发挥效率流水线原理流水线原理设过程段 Si所需的时间为τi,缓冲寄存器的延时为τl,线性流水线的时钟周期定义为τ=max{τi}+τl=τm+τl 流水线处理的频率为 f=1/τ流水线原理流水线原理l一个具有k 级过程段的流水线处理 n 个任务需要的时钟周期数为Tk=k+(n-1),所需要的时间为: T=Tk × τ而同时,顺序完成的时间为:T=n×k×τlk级线性流水线的加速比:Ck = TL = n·k Tk k+(n-1)流水线浮点运算器流水线浮点运算器A=a×2P, B=b×2q 在4级流水线加法器中实现上述浮点加法时,分为以下操作:(1) 求阶差(2) 对阶(3) 相加(4) 规格化2.6.4浮点运算器实例浮点运算器实例l浮点运算器实例lCPU之外的浮点运算器(数学协处理器)如80287l完成浮点运算功能,不能单用。
l可以和80386或80286异步并行工作l高性能的80位字长的内部结构有8个80位字长以堆栈方式管理的寄存器组l浮点数格式完全符合IEEE标准lCPU之内的浮点运算器(486DX以上)返回本本 章章 小小 结结l一个定点数由符号位和数值域两部分组成按小数点位置不同,定点数有纯小数和纯整数两种表示方法l按IEEE754标准,一个浮点数由符号位S、阶码E、尾数M三个域组成其中阶码E的值等于指数的真值e加上一个固定偏移值l为了使计算机能直接处理十进制形式的数据,采用两种表示形式:(1)字符串形式,主要用在非数值计算的应用领域;(2)压缩的十进制数串形式,用于直接完成十进制数的算术运算本本 章章 小小 结结l数的真值变成机器码时有四种表示方法:原码表示法,反码表示法,补码表示法,移码表示法其中移码主要用于表示浮点数的阶码E,以利于比较两个指数的大小和对阶操作l字符信息属于符号数据,是处理非数值领域的问题国际上采用的字符系统是七单位的ASCII码直接使用西文标准键盘输入汉字,进行处理,并显示打印汉字,是一项重大成就为此要解决汉字的输入编码、汉字内码、字模码等三种不同用途的编码本本 章章 小小 结结l为运算器构造的简单性,运算方法中算术运算通常采用补码加、减法,原码乘除法或补码乘除法。
为了运算器的高速性和控制的简单性,采用了先行进位、阵列乘除法、流水线等并行技术措施运算方法和运算器是本章的重点l定点运算器和浮点运算器的结构复杂程度有所不同早期微型机中浮点运算器放在CPU芯片外,随着高密度集成电路技术的发展,现已移至CPU内部返回此课件下载可自行编辑修改,仅供参考!此课件下载可自行编辑修改,仅供参考!感谢您的支持,我们努力做得更好!谢谢感谢您的支持,我们努力做得更好!谢谢。
