我想知道下面的位掩码的区别是什么,以及你可以使用的场景。
int a = 1;
int b = 2;
int c = 4;
int d = 8;
int letters = a | b | d;
int aviableLettersMask = //input some letter;
if (letters & aviableLettersMask)
{
}
if ((letters & ~aviableLettersMask) == 0)
{
}
由于
答案 0 :(得分:1)
区别在于:
第一次检查aviableLettersMask
letters
中是否有任何字母
第二个 - 如果aviableLettersMask
中没有其他字母存在。
答案 1 :(得分:1)
如果AviableLettersMask
包含至少一个字母或Letters
,则第一个表达式为true:
a|b|d & a|c = a // ok
a|b|d & c = 0 // false
a|b|d & 0 = 0 // false
如果AviableLettersMask
包含Letters
:
a|b|d & ~(a|b) = a|b|d & c|d = d // false
a|b|d & ~(a|b|d) = a|b|d & c = 0 // ok
a|b|d & ~(a|b|c|d) = a|b|d & 0 = 0 // ok