什么是IEEE754?

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

这里,不同的下标代表不同的十进制。