51要计数浮点和一个16位数的乘法,怎么破..........
8位的51,要计算一个16位整数和一个比较小的小数(0.03XXXXXXX)的乘法,我是直接乘呢还是有什么方法可以提供一下效率啊,小数太小,放大太多怕溢出啊
乡亲们,求支招 数据结构学的还记得不?高精度乘法 楼上的正解用数据结构的思想来弄 zeta1989 发表于 2014-4-22 12:44
数据结构学的还记得不?高精度乘法
额...这个还真没看过
待我去学学{:lol:} 谢谢指导 最简单的是用数组来表示数据和小数点,然后模拟笔算…… 记得廖老师的一本书里有介绍四字节浮点运算,我认为很好,楼主可查一下。 上面说错了,应该是周航慈老师的,现在玩工控多搞混了。 sdxjgby 发表于 2014-4-22 22:02
上面说错了,应该是周航慈老师的,现在玩工控多搞混了。
请问一下是什么书啊
我现在的做法就是将小数的各个位取出
然后用各个位去乘那个整数,再叠加
最后能得到我要的结果,不知道这样做有没有提高效率
好像这样改之后代码量少了一点 1.查表法
2. 移位法
3.定点法 给你一个绝好的办法,也是汇编里常用的做法,先用0.3xxx * 65536得到A,然后用A乘16位整数,得到4字节数,最高两个字节就是结果 zhugean 发表于 2014-4-23 08:38
给你一个绝好的办法,也是汇编里常用的做法,先用0.3xxx * 65536得到A,然后用A乘16位整数,得到4字节数, ...
定点运算的好方法 zhugean 发表于 2014-4-23 08:38
给你一个绝好的办法,也是汇编里常用的做法,先用0.3xxx * 65536得到A,然后用A乘16位整数,得到4字节数, ...
也就是先放大,取高两个字节就是右移16位,相当于除65536
恩,我现在好像也是这么做的,不过我是放大1000000倍,把小数的各个位取出来了再做乘法,不知道这样效率是有没有比直接两个整数相乘高一点 转成浮点计算呢,这个不错的 int a;
double b,c;
c=a*b;
会出错吗?
页:
[1]