c++中的位"或"和"与"



我有

#define MS 0x0100|0x011

我需要检查MS中存在的0x011。我使用MS & 0x011,它给出了存在的值。但是idMS & 0x10也给出了真值,我需要它作为伪

  • (value & mask) != 0:集合mask位中的是否至少有一个也设置在value
    (这就是value & mask在布尔上下文中的含义。(
  • (value & mask) == mask所有的集合mask位是否也设置在value

也就是说,第一个类似于";或";第二个类似的";和";。

(已编辑(你需要

((MS) & 0x11) == 0x11

感谢罗的评论

0x0100 | 0x011将产生0x111,这将导致0x1, 0x10, 0x100, 0x11, 0x110 and 0x111的所有&测试以评估true

您需要直接测试您的值,并且将无法使用您的#define

最新更新