Pythonのビット演算子はどのように使いますか?
Python のビット演算子には、AND 演算子 (&)、OR 演算子 (|)、XOR 演算子 (^)、NOT 演算子 (~)、左シフト演算子 (<<)、および右シフト演算子 (>>) などがあります。
各ビット演算子の演算規則は下表の通りです。
- AND 演算(&):2 つの対応するビットが両方 1 のとき、結果が 1 になる。それ以外の場合は、0 になる。
5と3は1
5の2進表記は101、3の2進表記は011で、対応するビットに1があるため、結果は001(1)となります。
- OR演算(|):対応する2つのビットのうち1つでも1であれば1、そうでなければ0になる。
5と3を足すと7になる
5を2進数に直すと101、3を2進数に直すと011となり、それぞれの対応する位置に1が必ず1つずつあるため、結果は111となり、7となります。
- 排他的論理和(XOR): 対応する2進数のビットが異なると1になり、同じだと0になります。
5の3乗は6
5の2進数は101で、3の2進数は011。対応する位で1つ違っているため、結果は110、つまり6になる。
- ビット毎の反転(~):数値の各バイナリ桁を反転する演算で、0は1に、1は0に変化します。
5 およそ -6
5の2進数表現は101、各2進数ビットを反転すると010になり、符号ビット1を加えると-6になります。
- ビットを左にシフトする(<<):数値の2進表現を指定されたビット位置左に移動し、右側にゼロを追加する。
5 << 2 = 20
5を2進数で表すと101で、これを2ビット左へシフトさせると10100となり、これは20を意味します。
- 数値の2進表記を指定されたビット数右へシフトし、左側を0で埋める。
サンプル: 10 ÷ 5 = 2
5を2進数で書くと101、右へ2ビットずらすと1、つまり1になる。
演算子は整数型オペランドに対してのみ使用できます。