我有四面旗帜
Current = 0x1
Past = 0x2
Future = 0x4
All = 0x7
假设我收到过去和 future 两个标志 (setFlags(PAST | FUTURE)
)。我如何判断 Past
是否在其中?同样,我怎么知道 Current
不在其中?这样我就不必测试所有可能的组合。
最佳答案
如果您希望测试掩码中的所有位都匹配:
if((value & mask) == mask) {...}
如果您希望测试掩码中的任何一位都匹配:
if((value & mask) != 0) {...}
当您测试多个事物的值时,差异最为明显。
测试排除:
if ((value & mask) == 0) { }
关于c# - 在标志上使用按位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/530077/