[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] && Logical AND
- [Example] BitMath Tutorial
Language Reference Home
86Duinoリファレンスのテキストは、Arduinoリファレンスを改変したもので、Creative Commons Attribution-ShareAlike 3.0ライセンスに基づいてライセンスされています。リファレンス内のコードサンプルはパブリックドメインとして公開されています。