什么是IEEE754?
标准表示法
为了便于软件的移植,浮点数的表达格式应该有一个统一的标准(定义)。1985 IEEE(电气和电子工程师协会)提出了IEEE754标准。按照标准,基数为2,顺序码e用移位码表示,尾数m用原码表示。按照原码的归一化方法,最高位数总是1,而这个标准默认存储这个1,这样尾数表示范围就比实际存储的大一位。IEEE754标准中实数的浮点格式是:
有三种具体形式:
表3 IEEE 754中三个浮点数的格式参数
浮点数
Type存储位偏移值()
订单代码e的值域真值表达式
数字符号顺序代码尾数总位数十六进制十进制
短实数1 823 32 7FH 1 27 1 ~ 254。
长实数1 1 52 64 3 FFH 1 023 1 ~ 2046。
临时实数1 15 64 803 FFFH 16383 1 ~ 32766。
IEEE对秩码为0或255的情况有特殊规定(2047)。
当浮点数的总数不变时,其精度值和范围值是矛盾的,所以一般机器都提供单精度和双精度格式。表4列出了IEEE754单精度浮点数的表达式范围,对于双精度只需要修改偏移值和尾数位数。
表4 IEEE754单精度和双精度浮点范围
典型范围浮点代码真值
数字符号(Ms)顺序码(e)尾数(m)
最大正数
最小正数
绝对值最大的负数
绝对值最小的负数0
1
1 11111110
00000001
11111110
00000001 11………11
00………00
11………11
00………00
标准浮点数的存储格式与图1(b)类似,只是尾数中隐式存储了一个1,所以在计算尾数真值时比一般形式多了一个整数1。由于秩码E的存储形式是127 offset,所以在计算其码移位时与大家熟悉的128 offset不同。正值比128 offset得到的值少1,负值多1。为了避免计算错误和便于理解,E常被存储为二进制真值。例如,如果值-0.5以IEEE754的单精度格式存储,首先,-0.510 =-0.12 =-1.0×2-12,其中s=1。e = 12610 = 01111102,存储形式为:
1 0111110 0000000000000 = be 000000000016
这里,不同的下标代表不同的十进制。