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

2007-2-28 16:58 4297 0 分类: 处理器与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方式。

文章评论0条评论)

登录后参与讨论
相关推荐阅读
wednes_942671283 2008-01-30 17:24
FPGA验证的目的和方法
   ...
wednes_942671283 2007-05-15 16:58
浅谈FPGA的开发流程
FPGA的开发流程和关键步骤的含义所谓综合:就是将HDL语言、原理图等设计输入翻译成由与、或、非门和RAM、触发器等基本逻辑单元的逻辑连接(网表),并根据目标和要求(约束条件)优化所生成的逻辑连接,生...
wednes_942671283 2007-03-20 10:07
五个故事
1、 宽容   一只小猪、一只绵羊和一头乳牛,被关在同一个畜栏里。有一次,牧人捉住小猪,牠大声号叫,猛烈地抗拒。绵羊和乳牛讨厌牠的号叫,便说:「他常常捉我们,我们并不大呼小叫。小猪听了回答道:「捉你们...
wednes_942671283 2007-03-16 09:30
[转]一个故事,希望对大家有启发
一个汽车行业的朋友,就职于某500强欧美公司。他的职业背景很简单,研究生毕业工作两年,薪水当时5K。这位朋友有很多优点,首先进取心很强,相信大家都看过《谁动了我的奶酪》,我觉得他对职场信息的关注就如同...
wednes_942671283 2007-03-14 09:14
ESD保护
ESD = Electro-Static Discharge 静电释放(放电)...
wednes_942671283 2007-03-01 12:42
三个寓言
当老婆刚刚冲完澡出来,老公正要开始淋浴时,门铃响了。 在几秒争吵谁该去应门之后,老婆裹了条毛巾急忙下去开门。 她打开门看见bob,他的邻居。 在她还没开口之前,bob就说:「如果你把那条毛巾拿下,我就...
广告
我要评论
0
0
广告
关闭 热点推荐上一条 /3 下一条