プログラム言語は、言語ごとに使える演算子が異なることがある。
今回は、C言語のコードを読む中で、初めて見る演算子を見かけたので、備忘録。
&=
演算子:
- ビットごとの論理積(AND)演算を行い、結果を左辺の変数に代入する
- 具体的には、
a &= b
はa = a & b
と同じ意味 - ビットごとの論理積演算は、対応するビットが両方のオペランドで共に1の場合に1を返し、それ以外の場合には0を返す
- この演算子は、特定のビットをクリア(0にする)するために使用する
|=
演算子:
- ビットごとの論理和(OR)演算を行い、結果を左辺の変数に代入する
- 具体的には、
a |= b
はa = a | b
と同じ意味 - ビットごとの論理和演算は、対応するビットがどちらか一方または両方のオペランドで1の場合に1を返し、両方とも0の場合には0を返す
- この演算子は、特定のビットをセット(1にする)するために使用することができる
~
演算子:
- ビットごとの否定(NOT)演算を行う
- 具体的には、
~a
はa の各ビットを反転させた結果
を返す - つまり、1は0に、0は1に変わる
- この演算子はビットの反転やビットマスクの作成などで使用される
これらの演算子は、ビット単位の操作を行う場合に非常に便利です。
ビット演算は主にハードウェア制御やデータ圧縮、暗号化、ビットマスクの操作などで使用されます。