如何检查两个位图上的值?

How to check for a value on two bitmaps?

我有两个 bit maps,我需要检查其中一个是否有值。我是否需要检查两者,或者我可以添加它们并检查一次吗?

取决于您对 "add" 的理解。我假设你的意思是按位或

const unsigned char map = map1 | map2;

很明显,如果在其中一个映射中设置了一个位,它也会在最后的 map 中设置。但是,我无法建议哪个版本更快,执行按位或并检查然后

bool bitIsSet = (map1 | map2) & maskForBit;

or 检查两者并使用逻辑 OR

bool bitIsSet = (map1 & maskForBit) || (map2 & maskForBit);

但我想它在您的应用程序中不会是速度方面的关键点(否则测试它!)。这似乎更多是品味问题或你能做什么read/understand better/faster.

编辑 汉斯的评论只是提醒我,你也可以意味着该位应该专门设置在一张地图中。在这种情况下,只需在第一种情况下将按位或与按位异或交换,在第二种情况下将逻辑或交换为不等于 !=