&

[Bitwise Operators]

説明

C++ のビット AND 演算子は、1 つのアンパサンド & で、他の 2 つの整数式の間に使用されます。ビット AND 演算子は、前後の式の各ビット位置を独立して演算します。その際、入力ビットが両方とも 1 の場合、出力は 1 になり、それ以外の場合は 0 になります。

これを別の方法で表現すると次のようになります。

0  0  1  1    operand1
0  1  0  1    operand2
----------
0  0  0  1    (operand1 & operand2) - returned result

86Duino では、int 型は 32 ビット値であるため、2 つの int 式の間で & を使用すると、32 個の同時 AND 演算が発生します。

次のようなコードフラグメントでは、

int a =  92;    // in binary: 00000000000000000000000001011100
int b = 101;    // in binary: 00000000000000000000000001100101
int c = a & b;  // result:    00000000000000000000000001000100, or 68 in decimal.

a と b の 32 ビットそれぞれがビット単位の AND を使用して処理され、結果の 32 ビットすべてが c に格納されます。その結果、2 進数では 01000100、10 進数では 68 という値になります。

ビット単位の AND の最も一般的な用途の 1 つは、整数値から特定のビット (または複数のビット) を選択することであり、これはマスキングとも呼ばれます。

PORTD = PORTD & 0b00000011;  // clear out bits 2 - 7, leave pins PD0 and PD1 untouched (xx & 11 == xx)

参照


Language Reference Home

86Duinoリファレンスのテキストは、Arduinoリファレンスを改変したもので、Creative Commons Attribution-ShareAlike 3.0ライセンスに基づいてライセンスされています。リファレンス内のコードサンプルはパブリックドメインとして公開されています。

上部へスクロール