Pythonでビット演算子のビット否定に触れるまでの記事のビット演算に触れる内容も今回で最後。
今回はビットシフトについて触れる。
詳細に触れる前に実際にどのような値になるか?を見たほうが良いので試したコードを記載する。
x = 1 # 0b1 y = x << 1 print(y) print(bin(y)) x = 13 # 0b1101 y = x << 1 print(y) print(bin(y)) y = x << 2 print(y) print(bin(y))
結果は上から順に
2 0b10 26 0b11010 52 0b110100
となった。
まずは、0b1 << 1 だけれども、結果は0b10になった。
次に0b1101 << 1 だけれども、結果は0b11010になった。
次に0b1101 << 2 だけれども、結果は0b110100になった。
結果のところで太文字にしているが、 << の後の数字分だけ、結果で右側に 0 が付与された。
<< はビットを左にシフト(移動)する。
続いて下記のコードを試してみる。
x = 52 # 0b110100 y = x >> 1 print(y) print(bin(y)) y = x >> 2 print(y) print(bin(y))
結果は上から順に
26 0b11010 13 0b1101
になった。
>> の後の数字分だけ、末尾の 0 が減っている。
厳密には桁数が減っている。
>> はビットを右にシフト(移動)している。
今まで触れてきたビット演算は一体何処に使うのか?
それは次の記事で触れる事にしよう。