我正在思考我从未遇到过的事情。也许这是有原因的。希望有人可以快速识别出模式!
test的值检查奇数,甚至更改为2:
int num = 1;
int test = 1;
while (num <= 255) {
if (num & test) {
cout << num << " num & 2 =" << (num & 2) << endl;
}
num++;
}
问题1:如何描述数学运算num&test
问题2:如果测试等于3,4或5,会发生什么?
感谢您分享您的想法。
最佳答案
答案1:运算是按位AND
Example num = 10, test = 1
10 = 1010b, 1 = 0001b
num & test = 0000b
if(num & test)
等效于if(bool(num & test)) bool(10 & 1) == bool(0) == false
答案2:
值测试检查奇数
仅当test = 1时,因为所有奇数的最低位都有1b
1 = 0001b
2 = 0010b
3 = 0011b
4 = 0100b
etc.
Example num = 10, test = 3
10 = 1010b, 3 = 0011b
num & test = 10 & 3 = 1010b & 0011b = 0010b = 2
关于c++ - 使用if(num&2)作为c++中的条件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34478447/