您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第5讲_浮点数四则运算
第5讲浮点数四则运算定点数和浮点数浮点数的加减运算浮点数的乘除运算小数点按约定方式标出1、定点数SfS1S2Sn…数符数值部分小数点位置SfS1S2Sn…数符数值部分小数点位置或定点机小数定点机整数定点机原码补码反码–(1–2-n)~+(1–2-n)–(2n–1)~+(2n–1)–1~+(1–2-n)–2n~+(2n–1)–(1–2-n)~+(1–2-n)–(2n–1)~+(2n–1)一、定点数和浮点数2、浮点数定义:小数点位置不固定的数据。表示形式:N=M·RE说明:N为浮点数,M为尾数,常用规格化形式表示,E为阶码,R为基数或底。常用的浮点数有两种:(1)单精度(32位),阶码8位,尾数24位(2)双精度(64位),阶码11位,尾数53位0.5≤|M|1以补码表示时可以取-10.00110.1100111.011=0.111011×23浮点数的阶码通常用补码或移码表示。移码公式:[X]移=2n+X-2n≤X2n移码特点:(1)0表示负数,1表示正数(2)只执行加减运算,且需要对得到的结果加以修正,即对结果的符号位取反。零的移码唯一[X]移=10000把[X]补符号位取反即可得[X]移浮点数的机内表示有下面二种格式:格式1格式2J3J2J1J0S0S-1S-2S-3S-4S-5S-6S-7阶符数符阶码数码S0J3J2J1J0S-1S-2S-3S-4S-5S-6S-7阶符数符阶码数码�阶码与数码位数的最佳分配方案n为数码位数,J为阶码位数,取满足该不等式的最小数如字长为12位,数符及阶符各占1位,剩下的10位分配方案即阶码3位,数码7位。nJ127123规格化方法:尾数为原码表示时,无论正负应满足1/2≦|d|1即:小数点后的第一位数一定要为1。正数的尾数应为0.1x….x负数的尾数应为1.1x….x尾数用补码表示时,小数最高位应与数符符号位相反正数应满足1/2≦d1,即0.1x….x负数应满足-1/2d≥-1,即1.0x….x特例S=–=–0.100012…12∴[–]补不是规格化的数S=–1∴[–1]补是规格化的数[S]原=1.1000…[S]补=1.1000…[S]补=1.0000…机器中数据的数值范围与精度数值范围:机器能表示的一个数的最大值与最小值之间的范围。数据精度:由尾数的位数决定,尾数位数越多,可表示精度越高。浮点数的表示范围–2(2m–1)×(1–2–n)–2–(2m–1)×2–n2(2m–1)×(1–2–n)2–(2m–1)×2–n最小负数最大负数最大正数最小正数负数区正数区下溢0上溢上溢–215×(1–2-10)–2-15×2-102-15×2-10215×(1–2-10)设m=4n=10上溢阶码最大阶玛下溢阶码最小阶码按机器零处理练习设机器数字长为24位,欲表示±3万的十进制数,试问在保证数的最大精度的前提下,除阶符、数符各取1位外,阶码、尾数各取几位?满足最大精度可取m=4,n=18解:215×0.×××……××15位…m=4、5、615位二进制数可反映±3万之间的十进制数∴215=32768214=16384∵3、举例例将+写成二进制定点数、浮点数及在定点机和浮点机中的机器数形式。其中数值部分均取10位,数符取1位,浮点数阶码取5位(含1位阶符)。19128解:设x=+19128二进制形式定点表示浮点规格化形式[x]原=1,0010;0.1001100000[x]补=1,1110;0.1001100000[x]反=1,1101;0.1001100000定点机中浮点机中000x=0.0010011x=0.0010011x=0.1001100000×2-10[x]原=[x]补=[x]反=0.0010011000当浮点数尾数为0时,不论其阶码为何值按机器零处理机器零当浮点数阶码等于或小于它所表示的最小数时,不论尾数为何值,按机器零处理如m=4n=10当阶码用移码,尾数用补码表示时,机器零为0,0000;0.000……1,0000;×.×××……×,××××;0.000……有利于机器中“判0”电路的实现当阶码和尾数都用补码表示时,机器零为(阶码=16)二、浮点数的加减运算步骤:1.检测能否简化操作。判操作数是否为0尾数为0阶码下溢2.对阶例.10.01(1)对阶:使两数阶码相等(小数点实际位置对齐,尾数对应权值相同)。(2)对阶规则:小阶向大阶对齐。2×0.10012×0.110123110.1010.01110.12×0.010132×0.110133.尾数加减.(1)1.0001+0.1001(4)阶码比较:比较线路或减法。(3)对阶操作:小阶阶码增大,尾数右移。例.AJBJ,则BJ+1BJ,BW,直到BJ=AJ1.1010(2)0.0101+0.1101AW+BWAW4.结果规格化W1/21.0010W1应左移规格化应右移规格化(1)左规尾数1,阶码减1,直到数符和第一数位不同为止11.0001+00.100111.1010(-1/2除外)Af1Af2A111.1010若Af1Af2A1+Af1Af2A1=1,则左规:(2)右规00.0101+00.110101.001001.0010Af1Af2若Af1⊕Af2=1,则右规:当尾数溢出(1)时,需右规即尾数出现01.×××或10.×××时……尾数1,阶码加1(5)舍入在对阶和右规过程中,可能出现尾数末位丢失,引起误差,需考虑舍入0舍1入法恒置“1”法(6)检查阶码双符号位判断是否溢出。阶码没有溢出则结果正确;阶码下溢时结果为机器0阶码上溢时,则置溢出标志{例题:两个浮点数相加已知:X=2010•0.11011011Y=2100•(-0.10101100)均为真值,求:X+Y要求:阶码用补码计算,尾数用补码计算。[Mx]补=0011011011[My]补=1101010100[Ex]补=00011[Ey]补=00100[-Ex]补=11100(1)对阶[Ex—Ey]补=[Ex]补+[—Ey]补=00010+11100=11110ExEy,Mx应右移2位,Ex’=00100[Mx]补=000011011011[Mx]补=0011011011[My]补=1101010100[Ex]补=00011[Ey]补=00100[-Ex]补=11100(2)尾数相加用补码的加法公式[My]补=1101010100[Mx+My]补=[Mx]补+[My]补=000011011011+1101010100=111000101011[Mx]补=000011011011[My]补=1101010100[Ex]补=00100[Ey]补=00100[-Ex]补=11100(3)规格化左规,1位[M]补=110001010110阶码减1[E1]补=[E]补+[1]补=00100+11111=00011[M]补=111000101011(4)舍入[M]补=110001010110[M’]补=1100010110∴M=0.11101010(5)判断有无溢出[E]补=00011无溢出∴X+Y=2011•(0.11101010)二、浮点乘除运算x=Sx·2jxy=Sy·2jy1.乘法x·y=(Sx·Sy)×2jx+jy2.除法xy=SxSy×2jx–jy(1)阶码采用补码定点加(乘法)减(除法)运算(2)尾数乘除同定点运算4.浮点运算部件阶码运算部件,尾数运算部件3.步骤(3)规格化
本文标题:第5讲_浮点数四则运算
链接地址:https://www.777doc.com/doc-3993086 .html