在 C++ 中使用 if( num & 2) 作为条件?

using if( num & 2) as a conditional in c++?

本文关键字:条件 num C++ if      更新时间:2023-10-16

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

测试 的值检查奇数,或者即使更改为<2>:

int num = 1;
int test = 1;
while (num <= 255) {
    if (num & test) {
        cout << num << " num & 2 =" << (num & 2) << endl;
    }
    num++;
}

问题1:你如何描述数学运算;测试

问题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