使用按位运算而不是算术替代?

Jua*_*uan 0 c++ bit-manipulation compilation

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

(i % 2 == 1)
Run Code Online (Sandbox Code Playgroud)

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

if(a & 1)
Run Code Online (Sandbox Code Playgroud)

我知道按位操作更快,有时我会使用位.

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

或者我总是在有可能的时候使用bitwise(即使它不太可读)?

Swo*_*ish 5

你应该总是使用人类可以更好阅读的形式.如果执行速度很重要,则必须分析程序并查看编译器生成的程序集.

  • +1并且凭借现代优化编译器的魔力,很可能"太聪明一半"的东西以及"人类可读和可维护"的东西都会编译成相同的代码.因此过早优化是值得避免的... PROFILE PROFILE PROFILE是唯一可靠的方法.我已经看到手动优化(并且在很大程度上不可读)的代码变得不那么高效.因为愚蠢的开发(*ahem*,我自己)实际上没有描述"改进". (2认同)