|= (compound bitwise or)

説明

複合ビットワイズOR演算子|=は、変数の特定のビットを「セット」(1にする)するために、変数と定数を使ってよく使われます。

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

構文

x |= y; // equivalent to x = x | y;

x:変数。許可されたデータ型:char、int、long。
y: 変数または定数。許可されたデータ型:char、int、long。

プログラム例

0と「bitwise ORed」されたビットは変更されないので、myByteがバイト変数の場合は

myByte | 0b00000000 = myByte;

1と「bitwise ORed」されたビットは1になるので

myByte | 0b11111111 = 0b11111111;

注意点と警告

ビット演算子でビットを扱っているので、定数はバイナリフォーマッタを使うのが便利です。他の表現でも数値は同じ値になりますが、理解するのが難しいです。また、わかりやすくするために0b00000000を表示していますが、どんな数値フォーマットでも0は0です。

したがって、変数のビット0と1を設定し、残りの部分を変更しない場合は、定数0b00000011と複合ビット和演算子(|=)を使用します。

1  0  1  0  1  0  1  0    variable
0  0  0  0  0  0  1  1    mask
----------------------
1  0  1  0  1  0  1  1

bits unchanged
                 bits set

以下は、同じ表現で、変数のビットを記号xに置き換えたものです。

x  x  x  x  x  x  x  x    variable
0  0  0  0  0  0  1  1    mask
----------------------
x  x  x  x  x  x  1  1
bits unchanged
                 bits set
myByte = 0b10101010;
myByte |= 0b00000011 == 0b10101011;
タイトルとURLをコピーしました