C ++ - 如何检查是否与&操作者

时间:2013-04-07 05:08:57

标签: c++ bit-manipulation

我正在研究一个项目,我们用一个字节跟踪标志。

可以使用几个选项设置该字节。例如:

0x00000001 - Person
0x00000002 - Object
0x00000003 - Vehicle

现在,当需要检查这些对象时,我们可以这样做:

如果(标志&安培; 00000001) {     //这是一个人 }

问题是,我想知道如何检查并查看它是否不是一个人。原谅我,如果这是一个简单的答案,但我已经尝试过!flags& 0x00000001并且它不会检出。我也试过把它比作0,但仍然没有运气。

2 个答案:

答案 0 :(得分:8)

你走近了。 operator!的{​​{3}}大于operator&,因此您需要括号:

if (!(flags & 0x00000001)) {
    //this is not a person
}

答案 1 :(得分:2)

运营商的优先级'!'高于运营商&', 所以请使用!(flags& 0x1)。

PS:0x3不能呈现车辆,但它呈现一个人物和一个物体。使用0x4来展示Vehicel。