1阶码,常为纯整数尾数,常为纯小数浮点数浮点数小数点的位置不固定,根据需要而浮动小数点的位置不固定,根据需要而浮动任何一个数任何一个数N N的浮点表示形式为的浮点表示形式为 N=M×2 N=M×2E E2.1 2.1 数据与文字的表示方法数据与文字的表示方法0+1+ +––0+1-1+ +––2第n位K个0K K个个1 1n n个个0 0n个1K个1•浮点数的表示范围浮点数的表示范围–若若阶码数值部分为阶码数值部分为K K位,尾数数值部分为位,尾数数值部分为n n位,均用补码表示,则位,均用补码表示,则2.1 2.1 数据与文字的表示方法数据与文字的表示方法3•规格化的浮点数规格化的浮点数–为了充分利用尾数的有效数位,规定尾数为了充分利用尾数的有效数位,规定尾数值应在值应在0.5~10.5~1之间–补码表示时,尾数的最高位应与符号位不补码表示时,尾数的最高位应与符号位不同同当当 1/2 <= M < 1 1/2 <= M < 1 时,应有时,应有0.1 … 0.1 … 的形式的形式当当 –1 <= M < - 1/2 –1 <= M < - 1/2 时,应有时,应有1.0 … 1.0 … 的形式的形式为什么是<,而不是<=?为什么是<=?2.1 2.1 数据与文字的表示方法数据与文字的表示方法补码的表示范围比原码宽,可以表示-1, [-1]补=1.0000000,是规格化的浮点数[-1/2]原[-1/2]补不是规格化的浮点数4浮点数的典型值:阶码和尾数均用浮点数的典型值:阶码和尾数均用补码补码表示表示浮点数代码浮点数代码真值真值阶码阶码尾数尾数最大正数最大正数最小正数最小正数规格化的最小正数规格化的最小正数绝对值最大负数绝对值最大负数绝对值最小负数绝对值最小负数规格化的绝对值最规格化的绝对值最小负数小负数01…101…110…010…010…010…0 01…1 01…110…010…010…010…00.11…110.11…110.00…01 0.00…01 0.10…000.10…001.00…001.00…001.11…111.11…111.01…111.01…112.1 2.1 数据与文字的表示方法数据与文字的表示方法5[X1]移移=27+1101101 =10000000 + 1101101 =11101101[X1]补补=01101101[X2]移移=27+(-1101101) = 10000000 - 1101101 = 00010011 [X2]补补= 10010011移码:在真值移码:在真值X X的基础上加一个常数,相当于的基础上加一个常数,相当于X X在数轴上向正方向偏移了若干单位。
在数轴上向正方向偏移了若干单位[X][X]移码移码= =偏置值偏置值+X+X标准偏置值:字长标准偏置值:字长n+1n+1位时,偏置值为位时,偏置值为2 2n n例:字长例:字长8 8位,若偏置值为位,若偏置值为2 27 7,,X1=+1101101,,X2= -1101101,求移码2.1 2.1 数据与文字的表示方法数据与文字的表示方法6真值真值X X( (十进制十进制) )真值真值X X(二进制)(二进制)[X][X]补补[X][X]移移-128-127… …-101127-10000000-1111111… …-00000010000000000000111111111000000010000001… …111111110000000000000001011111110000000000000001… …011111111000000010000001111111112.1 2.1 数据与文字的表示方法数据与文字的表示方法移码、补码和真值之间的关系移码、补码和真值之间的关系设字长设字长8 8位,偏置值为标准偏置值位,偏置值为标准偏置值——2——27 77移码的特点(字长移码的特点(字长8 8位,偏置值为位,偏置值为2 27 7))移码最高位为移码最高位为0 0表示负数,最高位为表示负数,最高位为1 1表示表示正数。
正数移码直观反映真值的大小移码直观反映真值的大小全全0 0时,所对应的真值最小;时,所对应的真值最小;全全1 1时,所对应的真值最大;时,所对应的真值最大;有利于两个浮点数进行阶码的大小比较有利于两个浮点数进行阶码的大小比较0 0的移码表示形式唯一的移码表示形式唯一[+0][+0]移移=[-0]=[-0]移移=10000000=10000000移码将真值映射到正数域,可视为无符号数移码将真值映射到正数域,可视为无符号数同一真值的补码和移码只相差符号位同一真值的补码和移码只相差符号位2.1 2.1 数据与文字的表示方法数据与文字的表示方法8IEEE754IEEE754标准的浮点数:应用于标准的浮点数:应用于80X8680X86微机微机18233232位位短浮点数短浮点数数符阶码 尾数64位长浮点数11152数符阶码 尾数80位临时浮点数数符阶码尾数115643232位短浮点数位短浮点数1.1.尾数隐含了最高位尾数隐含了最高位1(1(位权位权2 20 0) ),实际为,实际为2424位,尾数采用原位,尾数采用原码表示2.2.阶码采用偏置值为阶码采用偏置值为127127的移码表示的移码表示。
2.1 2.1 数据与文字的表示方法数据与文字的表示方法9(2)(2)计算出阶码真值计算出阶码真值e e = =移码移码- -偏置值偏置值127127 e e =1000 0010-111 1111=011=(3)=1000 0010-111 1111=011=(3)1010(3)(3)写出尾数写出尾数( (包括隐含的最高位包括隐含的最高位1) 1) 1.1.M=M=(4)(4)写出此数的浮点记数形式写出此数的浮点记数形式X X =(-1)=(-1)s s ×1.×1.M M ×2×2e e =+1.011011*2 =+1.011011*23 3(5)(5)转换成十进制数,并加上符号位转换成十进制数,并加上符号位 例例1: 1: 若短浮点数若短浮点数x x的的754754标准存储格式为标准存储格式为(41360000)(41360000)1616,,求其浮点数的十进制数值求其浮点数的十进制数值 (1)(1)将十六进制数转换成二进制数,写成短浮点数格式将十六进制数转换成二进制数,写成短浮点数格式2.1 2.1 数据与文字的表示方法数据与文字的表示方法011 0110 0000 0000 0000 0000011 0110 0000 0000 0000 0000100 0001 0100 0001 00 0s阶码(8位)尾数(23位)100 0100 0001 1100 0001 1010 0100 1100 0000 0000 0000010 0100 1100 0000 0000 0000正数阶码的移码(8位)隐含了最高数位1的尾数的原码(23位)例例2 2:将(:将(20.59375)20.59375)1010转换成短浮点数格式转换成短浮点数格式 (1)(1)把十进制数转换为二进制数把十进制数转换为二进制数 (20.59375) (20.59375)1010=(10100.10011)=(10100.10011)2 2 (2) (2)写成浮点记数形式,尾数保留最高位写成浮点记数形式,尾数保留最高位1 1,不计入。
不计入 10100.10011=1.0100 10011*2 10100.10011=1.0100 10011*24 4 (3)(3)计算出阶码的移码计算出阶码的移码 1111111+100=1000 0011 1111111+100=1000 0011 (4)(4)以短浮点数格式存储该数以短浮点数格式存储该数 41A4C000H41A4C000H2.1 2.1 数据与文字的表示方法数据与文字的表示方法112.6 浮点运算方法和浮点运算器浮点加减运算浮点加减运算设有两个浮点数设有两个浮点数X X和和Y,Y,它们分别为它们分别为 X==2Ex· MX Y==2Ey· MY完成浮点加减运算的操作过程:完成浮点加减运算的操作过程:0 0 操作数的检查操作数的检查求阶差,对大阶求阶差,对大阶尾数相加减尾数相加减结果规格化结果规格化舍入处理舍入处理溢出判断溢出判断12浮点加减运算0 0 操作数检查操作数检查如果判知两个操作数如果判知两个操作数xx或或yy中有一个数为中有一个数为0,0,则没有必要再进行后续的一系列操作,以节则没有必要再进行后续的一系列操作,以节省运算时间。
省运算时间求阶差,对大阶:只有两浮点数阶码相同时求阶差,对大阶:只有两浮点数阶码相同时, , 才可以进行尾数的加减运算才可以进行尾数的加减运算求阶差求阶差△△E E == E Exx--E Eyy △ △E E ==0,0,表示表示E Exx==E Eyy;; △ △E E > 0,> 0,表示表示E Exx> >E Eyy;; △ △E E < 0,< 0,表示表示E Exx< E>Ey y时,则时,则MMy y → → ,,E Ey y+1+1E Ex x1|>1,溢出。
溢出右规右规::MMz z→→,,E Ez z+1+1当尾数为当尾数为11.1...11.1...或或00.0....00.0....时,时,|M|Mz z左规左规::MMz z←←,,E Ez z-1-115浮点加减运算舍入处理舍入处理对阶或右规时,尾数右移,尾数的低位部分对阶或右规时,尾数右移,尾数的低位部分被丢掉,造成一定误差,要进行舍入处理被丢掉,造成一定误差,要进行舍入处理简单的舍入方法有三种:简单的舍入方法有三种:恒舍法:移出的位直接舍去,对保留部恒舍法:移出的位直接舍去,对保留部分不做任何修改分不做任何修改0 0舍舍1 1入法:右移出的位为入法:右移出的位为0 0则舍去,为则舍去,为1 1则将尾数的末位加则将尾数的末位加“1”“1”末位恒置一法:只要数位被移出,就在末位恒置一法:只要数位被移出,就在尾数的末尾恒置尾数的末尾恒置“1”“1”IEEE754IEEE754标准标准就近舍入、朝就近舍入、朝0 0、、+∞+∞、、- ∞- ∞舍入舍入16溢出判断溢出判断浮点数溢出主要体现在阶码的溢出,机器必浮点数溢出主要体现在阶码的溢出,机器必须做中断处理须做中断处理阶码上溢阶码上溢ú阶码大于可表示的最大正数,阶码大于可表示的最大正数, 看作看作+∞+∞、、- ∞- ∞阶码下溢阶码下溢ú阶码小于可表示的最小负数,看作机阶码小于可表示的最小负数,看作机器零器零浮点加减运算[ [例例25]25] 设设X X==2 2010010×0.11011011,×0.11011011,Y Y==2 2100100×(×(--0.10101100),0.10101100),求求X+YX+Y。
[ [解解] ]两数均以补码表示,阶码双符号位,尾数单符号位它们的两数均以补码表示,阶码双符号位,尾数单符号位它们的浮点表示为浮点表示为 [ [xx] ]浮浮==00 010, 0.11011011 00 010, 0.11011011 [ [yy] ]浮浮==<1> <1> 求阶差,对大阶求阶差,对大阶 △ △E E==E Exx--E Eyy==[ [E Exx] ]补补+[-+[-E Eyy] ]补补==00 010+11 10000 010+11 100==11 11011 110 X X的阶码小,应使的阶码小,应使MMx x 右移右移2 2位,位,E Ex x 加加2 2 [X] [X]浮浮==00 10000 100,,0.00110110(11)0.00110110(11)<2> <2> 尾数求和尾数求和 00.00110110(11) 00.00110110(11) + + 11.10001010(11)11.10001010(11)-2-2<3><3>规格化处理规格化处理 尾数运算结果为尾数运算结果为11.10001010(11)11.10001010(11) 符号位与最高数值位同值,应执行左规处理。
符号位与最高数值位同值,应执行左规处理 尾数左移尾数左移1 1位,阶码减位,阶码减1 1 结果:尾数为结果:尾数为11.00010101(1)11.00010101(1),阶码为,阶码为00 01100 011<4><4>舍入处理舍入处理 采用采用0 0舍舍1 1入法,结果为入法,结果为00 01100 011,,<5><5>溢出判断溢出判断 阶码符号位为阶码符号位为0000,不溢出,故得最终结果为,不溢出,故得最终结果为 [ [xx++yy] ]浮浮==00 01100 011,, [ [xx++yy] ]浮浮=(=(-0.11101010)×2-0.11101010)×201101119浮点运算器计算机实现浮点运算计算机实现浮点运算软件实现:利用定点运算部件,根据算法流软件实现:利用定点运算部件,根据算法流程图,编写浮点四则运算子程序供用户调用程图,编写浮点四则运算子程序供用户调用低档机,结构简单,速度慢低档机,结构简单,速度慢设置可选浮点协处理器设置可选浮点协处理器8028780287和和8038780387,速度较快。
速度较快将协处理器与将协处理器与CPUCPU集成集成8048680486以后的以后的CPUCPU采用浮点流水运算部件,形成流水作业采用浮点流水运算部件,形成流水作业进一步加快浮点运算的速度进一步加快浮点运算的速度奔腾以后的奔腾以后的CPUCPU20浮点运算器80X87美国美国IntelIntel公司生产的专用浮点数运算的处理器,配合公司生产的专用浮点数运算的处理器,配合80X86CPU80X86CPU进行工作,所以又称为进行工作,所以又称为协处理器协处理器80X8780X87与主与主CPUCPU的并行工作的并行工作80X8780X87有自己的浮点运算指令,但不能读写主存,有自己的浮点运算指令,但不能读写主存,真正的读写主存的工作是由主真正的读写主存的工作是由主CPUCPU执行主主CPUCPU从主存读取浮点运算指令,送从主存读取浮点运算指令,送80X8780X87,由,由80X8780X87译码并执行译码并执行80X8780X87运算期间,主运算期间,主CPUCPU取下一条其他指令予以取下一条其他指令予以执行,因而实现了并行工作执行,因而实现了并行工作如如80X8780X87执行过程中,主执行过程中,主CPUCPU又送来了一条浮点又送来了一条浮点指令,则指令,则80X8780X87给出给出““忙忙””信号。
信号当当80X8780X87完成浮点运算,取消完成浮点运算,取消““忙忙” ” 信号,主信号,主CPUCPU才发送下一条浮点运算指令才发送下一条浮点运算指令80X8780X87可处理多种数据类型可处理多种数据类型整数、浮点数、压缩十进制数等整数、浮点数、压缩十进制数等2180X87的内部结构。