我想知道下面的位掩码有什么区别,以及你可以使用什么场景。
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)
{
}
谢谢
我想知道下面的位掩码有什么区别,以及你可以使用什么场景。
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)
{
}
谢谢
区别如下:
第一次检查aviableLettersMask礼物中是否有任何字母letters
第二个 - 如果没有其他字母而存在于aviableLettersMask.
AviableLettersMask如果至少包含一个字母或 ,则第一个表达式为真Letters:
a|b|d & a|c = a // ok
a|b|d & c = 0 // false
a|b|d & 0 = 0 // false
第二个表达式将等于 0 如果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