説明
複合ビットワイズOR演算子|=は、変数の特定のビットを「セット」(1にする)するために、変数と定数を使ってよく使われます。
例
1 2 3 4 |
0 0 1 1 operand1 0 1 0 1 operand2 ---------- 0 1 1 1 (operand1 | operand2) - returned result |
構文
1 |
x |= y; // equivalent to x = x | y; |
x:変数。許可されたデータ型:char、int、long。
y: 変数または定数。許可されたデータ型:char、int、long。
プログラム例
0と「bitwise ORed」されたビットは変更されないので、myByteがバイト変数の場合は
1 |
myByte | 0b00000000 = myByte; |
1と「bitwise ORed」されたビットは1になるので
1 |
myByte | 0b11111111 = 0b11111111; |
注意点と警告
ビット演算子でビットを扱っているので、定数はバイナリフォーマッタを使うのが便利です。他の表現でも数値は同じ値になりますが、理解するのが難しいです。また、わかりやすくするために0b00000000を表示していますが、どんな数値フォーマットでも0は0です。
したがって、変数のビット0と1を設定し、残りの部分を変更しない場合は、定数0b00000011と複合ビット和演算子(|=)を使用します。
1 2 3 4 5 6 7 |
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 |
1 2 3 4 5 6 |
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 |
1 2 |
myByte = 0b10101010; myByte |= 0b00000011 == 0b10101011; |