1、2.1.3 数的定点表示与浮点表示2、浮点表示法(4) IEEE754 标准浮点格式前面讨论的是原理性浮点格式,但实际计算机的浮点格式与此有一些差异。下面简要介绍在当前主流微机中广泛采用的 IEEE754 标准浮点格式。按 IEEE754 标准,常用的浮点数的格式如图 2-3 所示。 IEEE754 有 3 种浮点表示格式,分别称为: 短浮点数(或称短实数)、长浮点数(或称长实数) 、临时浮点数(或称临时实数) 。它们的具体格式如表 2-4 所示。表 2-4 IEEE754 的 3 种浮点表示格式偏 置 值类型 数符(位)阶码(位)尾数数值(位)总位数(位) 十六进制 十进制短浮点数长浮点数临
2、时浮点数111811152352643264807FH3FFH3FFFH127102316383短浮点数又称为单精度浮点数,长浮点数又称为双精度浮点数,它们都采用隐含尾数最高数位(2 0)的方法,这样,无形中又增加了一位尾数,因此,相应地尾数真值实际上等于 1+(23 位尾数数值或 52 位尾数数值) 。临时浮点数又称为扩展精度浮点数,它没有隐含位,尾数真值就等于 64 位尾数数值。下面以 32 位短浮点数为例,最高位是数符,其后是 8 位阶码,以 2 为底,采用移码表示,但偏置量为 127,例如阶码真值为 1,则阶码的代码值为 128,这点与前述原理性偏置量(128)有点差异。其余 23 位
3、尾数为纯小数,因此,尾数位数实际上是:1 位隐含位+23 位尾数=24 位。注意:隐含的“1”是一位整数(即权位为 ) 。在浮点格式中表示出来的 23 位尾数20是纯小数,用原码表示。例如: (15)10 =(1111)2 ,将它规格化后结果为 1.1112 3 ,其中整数部分的“1”将不存储在 23 位尾数内。阶码是以移码形式存储的。短浮点数的偏置值为十进制 127 或十六进制 7FH;长浮点数的偏置值为十进制 1023 或十六进制 3FFH;临时浮点数的偏置值为十进制 16383 或十六进制 3FFFH。存储浮点数阶码部分之前,偏置值先要加到阶码真值上。若阶码真值为 3,在短浮点数中,移码
4、表示的阶码为:十进制 127+3=130 或十六进制 82H;长浮点数中,移码表示的阶码为:十进制 1023+3=1026 或十六进制 402H;临时浮点数中,移码表示的阶码为:十进制 16383+3=16386 或十六进制 4002H。例 2-29 将(82.25) 10 转换成短浮点数格式。1)先将(82.25) 10 转换成二进制数(82.25)10 =(1010010.01)2 2)规格化二进制数(1010010.01) 2 1010010.01=1.010010012 63)计算移码表示的阶码=偏置值+阶码真值:(127+6)10=(133)10 =(10000101)24)以短浮点
5、数格式存储该数阶码 E 尾数 M数符图 2-3 IEEE754 标准浮点格式因此:符号位=0 表示该数为正数阶码=10000101 由 3)可得尾数=01001001000000000000000 由 2)可得;尾数为 23 位,不足在后面添 15 位 0所以,短浮点数代码为:0;10000101;01001001000000000000000表示为十六进制代码为:42A48000H例 2-30 将(18.125) 10 转换成短浮点数格式。1)先将(18.125) 10 转换成二进制数(18.125) 10 =(10010.001) 2 2)规格化二进制数(10010.001) 2 1001
6、0.001=1.00100012 43)计算移码表示的阶码=偏置值+阶码真值:(127+4)10=(131)10 =(10000011)24)以短浮点数格式存储该数因此:符号位=1 表示该数为负数阶码=10000011 由 3)可得尾数=00100010000000000000000 由 2)可得;尾数为 23 位,不足在后面添 16 位 0所以,短浮点数代码为:1;10000011;00100010000000000000000表示为十六进制代码为:C1910000H如何由十进制数转换成长浮点数格式、临时浮点数格式;以及又如何由短浮点数格式、长浮点数格式、临时浮点数格式转换成十进制数请读者自己思考,这里不再赘述。