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

2番目の文字-に他の文字が存在しない場合aviableLettersMask

于 2013-03-17T09:22:01.127 に答える
1

AviableLettersMask最初の式は、少なくとも 1 つの文字または が含まれている場合にtrue になりますLetters

a|b|d & a|c = a  // ok
a|b|d & c = 0    // false
a|b|d & 0 = 0    // false

AviableLettersMask2 番目の式は、以下を含む場合は0になり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 に答える