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)
{

}

谢谢

4

2 回答 2

1

区别如下:

第一次检查aviableLettersMask礼物中是否有任何字母letters

第二个 - 如果没有其他字母而存在于aviableLettersMask.

于 2013-03-17T09:22:01.127 回答
1

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
于 2013-03-17T09:47:00.493 回答