
2.3.1 IEEE 754单精度浮点格式
IEEE 754单精度32bit浮点包含以下几个部分,如图2-2所示。

图2-2 IEEE 754 单精度32bit浮点格式
其中:
1bit符号位S:0表示正,1表示负;
8bit指数位E:指数位可为正也为负,位于S与M之间;
23bit尾数位M:有时被称为有效数字位,甚至被称为“小数位”。
按照上述格式构成的十进制数据可由式(2-1)表示:

例:0x3FE0 0000=0011 1111 1110 0000 0000 0000 0000 0000B
则
S=0
E=0111 1111=127
M=(1).11000=1+0.5+0.25=1.75
Value=(-1)°×1.75×2127-127=1.75
例:0xBFB0 0000=1011 1111 1011 0000 0000 0000 0000 0000B
则
S=1
E=0111 1111=127
M=(1).011=1+0.25+0.125=1.375
Value=(-1)1×1.375×2127-127=-1.375
例:Value=-2.5
则
S=1
2.5=1.25×21
1=E-offset=>E=128
M=1.25=(1).01=1+0.25
二进制结果为1100 0000 0010 0000 0000 0000 0000 0000 B=0xC020 0000
浮点运算的优势在于具有较大的数据运算动态范围:±2128≈±3.403×1038;单精度浮点的分辨率为2-23×2-126=2-149≈1.401×10-45。
如此看来,这种分辨率和数据范围能够解决很多数学操作。然而,在进行一个简单的大数据和小数据加法时,即使浮点设备也可能失败。以图2-3所示的加法操作Z=X+Y来说明问题,应该得到10.000000240的结果,但实际上结果并不等于10.000000240。因为0x41200000=10.000000000,而0x41200001=10.000001000,所以10.000000240无法表示。因此,图2-3所示的结果应该是10.000000000。

图2-3 Z=X+Y
然而使用IQMath进行10.0和0.00000024的加法运算时,会得出10.00000024的正确结果,这方面定点数比浮点数更有优势。