DSP控制器原理与技术应用
上QQ阅读APP看书,第一时间看更新

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的正确结果,这方面定点数比浮点数更有优势。