説明
複合ビットワイズ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;