ビットシフト

ビットシフトとは、ビット列の各桁を指定したビット数、左もしくは右に移動させる操作のことです。

左シフト

左方向のビットシフトのことを左シフトと呼びます。

通常、左シフトにより、右側の空いたビットには0が入ります。

例えば、以下は、8桁のビット列を3ビット左シフトした例です。

11001100  (シフト前)
01100000  (シフト後)

右シフト

右方向のビットシフトのことを右シフトと呼びます。

右シフトにより左側の空いたビットを最上位ビットで埋める右シフトのことを算術右シフトと呼びます。このとき、最上位ビットは符号ビットを想定しています。

一方、右シフトにより左側の空いたビットを0で埋める右シフトのことを論理右シフトと呼びます。

以下は、2の補数を用いた整数表現による符号付き整数の8桁のビット列を3ビット算術右シフトした例です。

11001100  (シフト前)
11111001  (シフト後)