打印

求教单片机中定点小数转化为BCD的算法

[复制链接]
2677|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
singleywy|  楼主 | 2010-10-10 15:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
singleywy|  楼主 | 2010-10-10 15:52 | 只看该作者
本帖最后由 singleywy 于 2010-10-10 15:56 编辑

我暂时自己想出一个算法,如
i=0.56783
if(i>=0.8){BCD[0]+=8;i-=0.8;}
if(i>=0.4){BCD[0]+=4;i-=0.4;}
if(i>=0.2){BCD[0]+=2;i-=0.2;}
if(i>=0.1){BCD[0]+=1;i-=0.1;}
if(i>=0.08){BCD[1]+=8;i-=0.08;}
if(i>=0.04){BCD[1]+=4;i-=0.04;}
if(i>=0.02){BCD[1]+=2;i-=0.02;}
if(i>=0.01){BCD[1]+=1;i-=0.01;}
if(i>=0.008){BCD[2]+=8;i-=0.008;}
if(i>=0.004){BCD[2]+=4;i-=0.004;}
if(i>=0.002){BCD[2]+=2;i-=0.002;}
if(i>=0.001){BCD[2]+=1;i-=0.001;}
............

使用特权

评论回复
板凳
singleywy|  楼主 | 2010-10-10 15:57 | 只看该作者
不知道大家还有什么好的算法,用在51单片机上,

使用特权

评论回复
地板
singleywy|  楼主 | 2010-10-10 16:15 | 只看该作者

使用特权

评论回复
5
singleywy|  楼主 | 2010-10-10 17:30 | 只看该作者
没人帮忙么,求教呀,大家谈谈自己的算法呀

使用特权

评论回复
6
singleywy|  楼主 | 2010-10-10 19:46 | 只看该作者
哥,蛋疼了,真的没有高手来帮忙么,或者谈一下我的算法效率怎么样也可以,发表一下自己的看法呀,不能来一下不留自己的脚印吧

使用特权

评论回复
7
免证入网| | 2010-10-11 09:55 | 只看该作者
首先声明我不是高手。你的for 循环恐怕……呵呵。我觉得首先你要确定精度问题,把一个实数分整和小数两部分,然后整数部分高到低位入栈,入完小数点入线,然后放大小数部分,如精确千分之一则乘1000,结果用整数入栈的方法入栈,最后栈里就是那个数的bcd表示。

使用特权

评论回复
8
免证入网| | 2010-10-11 09:58 | 只看该作者
哦,看错,原来是表示成8421码

使用特权

评论回复
9
singleywy|  楼主 | 2010-10-11 18:35 | 只看该作者
我在想,还有一种算法就是乘10,提取整数法,定点小数的乘法感觉还是好处理的

使用特权

评论回复
10
singleywy|  楼主 | 2010-11-10 20:59 | 只看该作者
结贴,这贴真蛋疼,只有自己在顶

使用特权

评论回复
11
ejack| | 2010-11-11 08:01 | 只看该作者
……最初的定点小数是怎么来的?

如果能处理原始的整数,势必大大减轻单片机的负荷。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

295

帖子

3

粉丝