原创 DSP中浮点数的表示方法

2007-2-28 16:58 5488 11 11 分类: 处理器与DSP

先介绍一下IEEE754中浮点数的定义(这里只介绍单精度浮点数):


单精度浮点数由4字节(32位)组成,且分成3段:数符s(0表示正数,1表示负数),阶码e(以2为底数)和尾数x。其中数符1位,占据bit31;阶码8位,占据bit30~bit23;尾数23位,占据bit22~bit0。


浮点数在DSP中的表示:以328.5为例,


首先,确定数符s=0;


其次,将328.5转换成二进制原码表示101001000.1;


再次,将原码101001000.1小数点移位到小数点左边只剩下1位1,即1.010010001,记下所移位数8;阶码占8位,可以表示有符号数,也可表示无符号数,这里采用无符号数,就是将所移位数加上127,转成二进制原码8 +127 = 135 = 10000111b,即e = 10000111;


最后,移位后的原码1.010010001去掉整数部分,只保留小数部分010010001,并在其右边添0,直到满23位,即01001000100000000000000作为尾数。


然后将数符,解码,尾数连起来就是328.5在DSP中的表示了,为0x43A44000。


将十六进制表示的浮点数转换成十进制:


首先,要读出浮点数的数符s,阶码e,尾数x;


其次,按后面的公式计算:(-1)^s  * (1 + x) * 2^(e - 127);


再次,将23位尾数转换成十进制纯小数的方法是先将其转换为整数,然后除2^23,即可得到x。


还有下面两个术语:


big endian和little endian:对于一个整数2882400086,它的十六进制原码是0x AB CD EF 56。如果采用big endian方式,存储时就是0x AB CD EF 56;如果采用little endian方式,存储时是0x 56 EF CD AB。


在Intel CPU中通常采用little endian方式,而在TI DSP中通常采用big endian方式。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
11
关闭 站长推荐上一条 /3 下一条