<分区>
假设我正在检查奇数:
(i % 2 == 1)
编译器会将该操作转换为:
if(a & 1)
?
我知道按位运算速度更快,有时我会使用位。
但是我的问题是:如果普通算术更具可读性(在大多数情况下),如果编译器稍后可能会转换它,我什么时候应该使用按位?
或者我是否应该在可能的情况下始终使用按位(即使它的可读性较差)?
<分区>
假设我正在检查奇数:
(i % 2 == 1)
编译器会将该操作转换为:
if(a & 1)
?
我知道按位运算速度更快,有时我会使用位。
但是我的问题是:如果普通算术更具可读性(在大多数情况下),如果编译器稍后可能会转换它,我什么时候应该使用按位?
或者我是否应该在可能的情况下始终使用按位(即使它的可读性较差)?
最佳答案
您应该始终使用人类可读性更好的形式。如果执行速度很重要,您必须分析您的程序并查看您的编译器生成的程序集。
关于c++ - 什么时候使用按位运算而不是算术运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52137520/