什么时候使用按位运算而不是算术替代?

时间:2018-09-02 13:31:34

标签: c++ compilation bit-manipulation

让我们说我正在检查奇数:

(i % 2 == 1)

编译器会将该操作转换为:

if(a & 1)

我知道按位运算会更快,有时我会使用位。

但是我的问题是:如果普通算术更具可读性(在大多数情况下),那么编译器以后可以转换它时,我应该何时按位使用?

还是应该在可能的情况下(即使可读性较低)始终按位使用?

2 个答案:

答案 0 :(得分:5)

您应始终使用人类更易阅读的格式。如果执行速度很重要,则必须分析程序并查看编译器生成的程序集。

答案 1 :(得分:0)

唯一的告诉方法是查看编译器生成的汇编语言代码。编译器可以进行各种优化。编译可以轻松地将您的模运算符更改为位测试指令。

性能是系统设计的产物;不进行编码。

两个示例之间的速度差异非常小,几乎在几乎所有应用程序中都不会注意到。