当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – 浮点乘法的快速替代方案,用于计算百分比

来源:互联网 收集:自由互联 发布时间:2021-06-22
我在Arduino上编写了一些代码,需要快速运行并对整数的百分比进行粗略近似. 例如,给定一个数字我想找到它的90%,或70%或30%等.显而易见的方法是乘以浮点,例如. x * 0.9;或x * 0.3;但因为
我在Arduino上编写了一些代码,需要快速运行并对整数的百分比进行粗略近似.

例如,给定一个数字我想找到它的90%,或70%或30%等.显而易见的方法是乘以浮点,例如. x * 0.9;或x * 0.3;但因为我需要速度,我想避免浮点计算.如果我只是除以2的幂,我会做一个按位移位,但有没有类似的技术使用整数逼近90%,80%等?

您可以使用具有二次幂分母的分数来近似这些百分比.

这是一个2 ^ 16的简单示例:

90% = 90 / 100 ~ 58982 / 65536
70% = 70 / 100 ~ 45875 / 65536
30% = 30 / 100 ~ 19661 / 65536

 x% =  x / 100 ~ x * 655 / 65536

这些部门(现在是二人权力)可以轮班完成.

当然,可能需要一些预先计算来生成这些分数.

网友评论