我正在使用按位运算符将一些 bool 值存储在变量中。我假设我适本地存储了它们,尽管这是我的作业:
int bit = 0;
bit |= 1;
bit |= 2;
bit |= 4;
bit |= 8;
我不确定的是检查部分。我对逻辑 和位 运算符之间的区别有一个简单的了解。这是我检查值的方法:
if ((bit & 1) && (bit & 2) && (bit & 8)) {
std::cout << "a" << std::endl;
}
else {
std::cout << "b" << std::endl;
}
我想知道那种条件是否正确(我做了一些测试,但我可能遗漏了一些东西)而且我还想知道我是否可以同时检查多个位,例如:
if (bit && (1 & 2 & 8) {
std::cout << "a" << std::endl;
}
else {
std::cout << "b" << std::endl;
}
我知道最后一个不会按预期工作(至少那是测试给我的结果),但我想说明我的想法。
最佳答案
i want to know if i can check multiple bits at the same time
是的,你可以这样做,但你的代码不正确。
1 & 2 & 8
将始终为零。您需要使用1 | 2 | 8
。bit && (1 & 2 & 8)
由于上述原因不正确。
您可以使用:
if ( (bit & (1 | 2 | 8)) == (1 | 2 | 8) ) {
std::cout << "a" << std::endl;
}
else {
std::cout << "b" << std::endl;
}
表达式 (bit & 1) && (bit & 2) && (bit & 8)
在逻辑上与表达式 (bit & (1 | 2 | 8)) == (1 | 2 | 8)
在 https://ideone.com/KdGjiO 查看它的工作情况.
关于c++ - 逻辑与按位与,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46247382/