这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 怎样在55里面实现浮点算法

共3条 1/1 1 跳转至

怎样在55里面实现浮点算法

菜鸟
2004-10-13 18:48:49     打赏
怎样编程以实现可以在55里面进行浮点算法,把十进制数转化为浮点数,再进行浮点运算,结果再转为十进制。给点指导性意见,不胜感激!



关键词: 怎样     里面     实现     浮点     算法    

菜鸟
2004-10-15 22:22:00     打赏
2楼
加法/减法运算的C语言定点模拟设浮点加法运算的表达式为:

float x,y,z;

z=x+y;

将浮点加法/减法转化为定点加法/减法时最重要的一点就是必须保证两个操作数的定标值一样。若两者不一样,则在做加法/减法运算前先进行小数点的调整。为保证运算精度,需使Q值小的数调整为与另一个数的Q值一样大。此外,在做加法/减法运算时,必须注意结果可能会超过16位表示。如果加法/减法的结果超出16位的表示范围,则必须保留32位结果,以保证运算的精度。

1.结果不超过16位表示范围

设x的Q值为Qx,y的Q值为Qy,且Qx>Qy,加法/减法结果z的定标值为Qz,则

z=x+y Þ

=

= Þ

所以定点加法可以描述为:

int x,y,z;

long temp; /*临时变量*/

temp=y<<(Qx-Qy);

temp=x+temp;

z=(int)(temp>>(Qx-Qz)), 若Qx≥Qz

z=(int)(temp<<(Qz-Qx)), 若QxQ≤z

例3.2 定点加法

设x=0.5,y=3.1,则浮点运算结果为z=x+y=0.5+3.1=3.6;

Qx=15,Qy=13,Qz=13,则定点加法为:

x=16384;y=25395;

temp=25395<<2=101580;

temp=x+temp=16384+101580=117964;

z=(int)(117964L>>2)=29491;

因为z的Q值为13,所以定点值z=29491即为浮点值z=29491/8192=3.6。

例3.3 定点减法

设x=3.0,y=3.1,则浮点运算结果为z=x-y=3.0-3.1=-0.1;

Qx=13,Qy=13,Qz=15,则定点减法为:

x=24576;y=25295;

temp=25395;

temp=x-temp=24576-25395=-819;

因为Qx<Qz,故 z=(int)(-819<<2)=-3276。由于z的Q值为15,所以定点值z=-3276即为浮点值z=-3276/32768»-0.1。


菜鸟
2006-01-11 23:46:00     打赏
3楼
shizheyangde

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]