& (bitwise and)

説明

C++ のビットごとの AND 演算子です。
2 つの整数式の間にも使用 &を使用してANDを取ります。
ビットごとの AND は、周囲の式の各ビット位置を、次のルールに従って独立して操作します入力ビットが両方とも 1 の場合、結果の出力は 1、そうでない場合は 0 です。

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

Arduinoではint型は16ビットの値なので、2つのint型の式の間に&を使うと、16回のAND演算が同時に行われます。

コード例

コードフラグメントでは

int a =  92;    // in binary: 0000000001011100
int b = 101;    // in binary: 0000000001100101
int c = a & b;  // result:    0000000001000100, or 68 in decimal.

aとbの16ビットがそれぞれビットワイズANDで処理され、結果の16ビットすべてがcに格納され、2進法では01000100、10進法では68という値になります。

ビットごとのANDの最も一般的な使用法の一つは、整数値から特定のビット(または複数のビット)を選択することで、しばしばマスキングと呼ばれます。以下に例を示します(AVRアーキテクチャ固有)。

PORTD = PORTD & 0b00000011;  // clear out bits 2 - 7, leave pins PD0 and PD1 untouched (xx & 11 == xx)
タイトルとURLをコピーしました