gpt4 book ai didi

你能用整数运算代替浮点除法吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:15:10 36 4
gpt4 key购买 nike

我使用的 Cortex MCU 不支持硬件中的浮点除法。 GCC 编译器通过基于软件的方式解决了这个问题,但警告说它可能非常慢。

现在我想知道如何才能完全避免它们。例如,我可以放大值因子 10000(整数乘法),然后除以另一个大因子(整数除法),并得到完全相同的结果。

但这两个运算实际上通常比单个浮点运算更快吗?例如,替换是否有意义:

int result = 100 * 0.95f

通过

int result = (100 * 9500) / 10000

要达到 95% 吗?

最佳答案

如果可以的话,最好完全摆脱除法。如果除数是编译时常量,这就相对容易了。通常,您安排事情以便任何除法运算都可以用位移代替。所以对于你的例子:

 unsigned int x = 100;
unsigned int y = (x * (unsigned int)(0.95 * 1024)) >> 10; // y = x * 0.95

显然,您需要非常清楚 x 的范围,以避免中间结果溢出。

一如既往,请记住过早的优化是有害的 - 只有在您发现性能瓶颈时才使用这样的定点优化。

关于你能用整数运算代替浮点除法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25523421/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com