使用if(num& 2)作为c ++中的条件?

时间:2015-12-27 07:24:31

标签: c++ c

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

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 会怎样?

感谢您分享您的想法。

1 个答案:

答案 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