共3条
1/1 1 跳转至页
怎样在55里面实现浮点算法

加法/减法运算的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。

共3条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 |