【发布时间】:2011-12-25 17:00:02
【问题描述】:
除了写“/6”,我应该写什么才能去掉除法运算符?
int a ;
c = a / 6 ;
如果您对该主题有更多了解,能否在 b != 2 的倍数时给我一般算法?
前:
b = 1、3、5、6、7、9、10 等
【问题讨论】:
-
提示:除法只是重复减法。
-
另一个提示:你可以乘以 1/6 的结果。
-
@DOK - 你如何计算
1/6? -
@opalgo 不是
6和102 的倍数? -
@Atom 真的不是这样。如果您要除以编译时间常数,则可能会进行优化,我们将一个除法替换为乘法,并进行一些加法和移位。这仍然比现代 CPU 上的划分要快。但有趣的是:编译器作者也知道这些技巧(事实证明他们确实考虑过这些事情——谁会想到)——是的,现代编译器会做这些事情吗?所以真的是非优化的主要例子。
标签: c optimization micro-optimization