&=

[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] |= (compound bitwise or)
  • [Language] (bitwise AND)
  • [Language] | (bitwise OR)

Language Reference Home

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

上部へスクロール