スポンサーリンク

&= (compound bitwise and)

スポンサーリンク
スポンサーリンク

説明

複合ビット演算子「&=」は、変数と定数を使って、変数の特定のビットを強制的にLOW状態(0)にするためによく使われます。これをプログラミングガイドでは、ビットの「クリア」や「リセット」と呼ぶことがあります。

Bitwise AND & 演算子のおさらいです。

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

 

構文

&= y; // equivalent to x = x & y;
x char、int、long
y char、int、long

コード例

MyByteがバイト変数の場合、0と「ビットごとのAND」されたビットは0にクリアされます。

myByte & 0b00000000 = 0;

注意点

ビット演算子でビットを扱っているので – 定数でバイナリフォーマッタを使うのが便利です。他の表現でも数値は同じ値になりますが、理解しづらいだけです。また、わかりやすくするために0b00000000を表示していますが、どんな数値フォーマットでもゼロはゼロです(うーん、何か哲学的なものを感じますね)。

結果として、変数のビット0と1をクリア(ゼロにする)し、変数の残りの部分を変更しないでおくには、定数0b11111100と複合ビット演算子(&=)を使用します。

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

bits 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

bits unchanged
                 bits cleared
myByte = 0b10101010;
myByte &= 0b11111100;  // results in 0b10101000
タイトルとURLをコピーしました