【发布时间】:2022-06-30 13:32:25
【问题描述】:
只是想知道编写这样的代码是否更好/更有效:
if (bitset[index] & 1)
{
//do something
}
与:
if (bitset[index] == 1)
{
//do something
}
谢谢!
-
这两段代码不等价
-
他们都返回 1 不是吗?
-
不,首先检查第一位是否为 1 和其他 - 可以是任何东西,第二 - 检查第一位是否为 1,其他位是否为零
-
我很确定它们是等效的 - bitset[index] 返回一位,您可以将该位与 1 进行比较,即 0001,因此如果该位为 1,它将返回 1
-
无论如何,并非所有语言都有位集,如果我们谈论 c++,那么 - 两者都应该编译成相同的指令(但在最坏的情况下,第一个会更长,因为 AND 然后比较),风格明智 - 第二个是更具可读性并显示意图
标签: optimization comparison bit-manipulation bitwise-operators bitset