[Compound Operators]
説明
複合ビットAND演算子(&=)は、変数と定数の間で、変数内の特定のビットを強制的にLOW状態(0)にするためによく使用されます。プログラミングガイドでは、これを「ビットのクリア」または「ビットのリセット」と呼ぶことがよくあります。
構文
x &= y; // equivalent to x = x & y;
媒介変数
x: char、int、またはlong変数y: 整数定数またはchar、int、long
例
まず、ビットAND(&)演算子について復習します。
0 0 1 1 operand1 0 1 0 1 operand2 ---------- 0 0 0 1 (operand1 & operand2) - returned result
0と「ビット単位のAND」演算されたビットは0にクリアされるので、myByteがバイト変数の場合、
myByte & B00000000 = 0;
1と「ビット単位のAND」演算されたビットは変更されないので、
myByte & B11111111 = myByte;
注: ビット演算子でビットを扱っているため、定数を使ったバイナリフォーマッタを使うと便利です。数値は他の表現でも同じ値ですが、理解しにくいというだけです。また、分かりやすさのためにB00000000と表示していますが、どの数値形式でもゼロはゼロです(うーん、何か哲学的な話でしょうか?)。
したがって、変数のビット0と1をクリア(ゼロに設定)し、変数の残りの部分は変更しない場合は、定数B11111100と複合ビットAND演算子(&=)を使用します。
1 0 1 0 1 0 1 0 variable
1 1 1 1 1 1 0 0 mask
----------------------
1 0 1 0 1 0 0 0
variable unchanged
bits cleared以下は、変数のビットをシンボル x に置き換えた同じ表現です。
x x x x x x x x variable
1 1 1 1 1 1 0 0 mask
----------------------
x x x x x x 0 0
variable unchanged
bits clearedつまり、
myByte = 10101010; myByte &= B1111100 == B10101000;
参照
Language Reference Home
86Duinoリファレンスのテキストは、Arduinoリファレンスを改変したもので、Creative Commons Attribution-ShareAlike 3.0ライセンスに基づいてライセンスされています。リファレンス内のコードサンプルはパブリックドメインとして公開されています。