我正在思考我从未遇到过的事情。也许这是有原因的。希望有人可以快速识别出模式!

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/

10-11 22:11
查看更多