我正在思考一些我从未遇到的事情......也许是有原因的。希望有人可以快速识别出模式!
test 的值会检查奇数,或者即使更改为 2 :
int num = 1;
int test = 1;
while (num <= 255) {
if (num & test) {
cout << num << " num & 2 =" << (num & 2) << endl;
}
num++;
}
问题1:如何描述数学运算 num&amp;测试
问题2:如果 测试 等于 3,4或5 会怎样?
感谢您分享您的想法。
答案 0 :(得分:3)
答案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