web-dev-qa-db-ja.com

32ビット整数のビットごとのAND

C#の2つの32ビット整数に対してビット単位のAND演算をどのように実行しますか?

関連:

最も一般的なC#ビット演算。

13
Tony The Lion

&演算子を使用

21
David M

使用 &演算子。

二項&演算子は整数型に対して事前定義されています[。]整数型の場合、&はそのオペランドのビット単位のANDを計算します。

[〜#〜] msdn [〜#〜] から。

6
jason
var x = 1 & 5;
//x will = 1
3
mcintyre321
const uint 
  BIT_ONE = 1,
  BIT_TWO = 2,
  BIT_THREE = 4;

uint bits = BIT_ONE + BIT_TWO;

if((bits & BIT_TWO) == BIT_TWO){ /* do thing */ }
2
bitlather
var result = (UInt32)1 & (UInt32)0x0000000F;

// result == (UInt32)1;
// result.GetType() : System.UInt32

結果をintにキャストしようとすると、0x80000000から始まるオーバーフローエラーが発生する可能性があります。チェックを外すと、ビットマスクを操作するときにそれほど珍しくないオーバーフローエラーを回避できます。

result = 0xFFFFFFFF;
Int32 result2;
unchecked
{
 result2 = (Int32)result;
}

// result2 == -1;
0
George Polevoy

使用&演算子(&&ではない)

0
Jim L
int a = 42;
int b = 21;
int result = a & b;

もう少し詳しくは、最初のGoogleの結果をご覧ください。
http://weblogs.asp.net/alessandro/archive/2007/10/02/bitwise-operators-in-c-or-xor-and-amp-amp-not.aspx

0
rui
0
Jim C