シフト演算(論理シフト・算術シフト)

更新日:

用語解説

シフト演算はビット列を左右へ移動する演算で、論理シフトは空いた桁を0で埋め、算術右シフトは符号を保つよう最上位の符号ビットで埋めます。

■ 試験で押さえるポイント

  • 論理左・右シフトは符号なしビット列に用い、桁外へ出たビットは捨て、空き桁へ0を入れます。

  • 2進数を左へnnビットシフトすると範囲内では2n2^n倍、右へnnビットシフトすると符号なし整数では2n2^nで切捨て除算します。

  • 2の補数表現の算術右シフトは最上位ビットを複製して負号を保ちます。負数の丸め規則は言語・処理系を確認します。

  • 左シフトで有効ビットが桁外へ出るとオーバーフローし、回転(ローテート)は捨てずに反対側へ戻すためシフトとは異なります。

xn=x×2nx\ll n=x\times2^n

xn=x2n(x0)x\gg n=\left\lfloor\frac{x}{2^n}\right\rfloor\quad(x\ge0)

■ 選択肢での判断ポイント

論理右シフトは0埋め、算術右シフトは符号ビットを複製します。左1ビットは2倍、右1ビットは2分の1を値域内で使います。

例: 8ビットの`11110000`を論理右へ2ビットなら`00111100`、負数として算術右へ2ビットなら`11111100`です。

音声で聞く

同じ分野の用語