假设x是位掩码值,b是一个标志。
x = 0b10101101
b = 0b00000100似乎有两种方法可以检查b指示的位是否在x中打开。
if (x & b != 0) // (1)
if (x & b == b) // (2)在大多数情况下,这两种检查似乎总是产生相同的结果,因为b总是一个二进制文件,只打开一位。
然而,我想知道是否有例外使一种方法比另一种方法更好?
发布于 2015-04-07 21:07:55
通常,如果我们将这两个值解释为位设置,则第一个条件检查x和b的交集是否为空(或者换句话说:如果b和x有相同的元素),而第二个条件检查b是否为x的子集。
显然,如果b是单例,则b是x的子集当且仅当交集不是空的。
所以,当你不能百分之百保证b是独生子女时,明智地选择你的条件。问问你自己,如果你想表达的话,b的所有元素都必须是x的元素,或者b的元素也是x的元素,这是一个很大的区别,除了的。
https://stackoverflow.com/questions/29501160
复制相似问题