本文へ移動

ろんりしふと

論理シフト

2進数のビット列を左右に移動させる操作です。空いた桁には0が補填され、符号は考慮しません。

詳しい説明

論理シフトとは、2進数のビット列を左右にずらす操作のことです。このとき、シフトして空いた桁には必ず0が埋められ、押し出されたビットは消失します。算術シフトと異なり、最上位ビット(符号ビット)を特別扱いせず、単なるビットの並びとして扱うのが特徴です。

この演算は、特定のビットを取り出したり、複数の値を組み合わせたりするマスク処理や、低レイヤでのビット操作において頻繁に利用されます。例えば、特定のビット位置が1かどうかを判定したり、ビットフラグとして使われている複数の値を分離・結合したりする際に便利です。コンピュータ内部のデータ処理では、算術シフトと論理シフトを使い分けることで、効率的な計算を実現しています。

試験では、論理シフトと算術シフトの挙動の違いが明確に問われます。算術シフトは符号を考慮してシフトしますが、論理シフトは符号を考慮しません。2進数の数値を与えられて、シフトした後の結果を問う問題や、どのような用途(論理演算用か算術演算用か)で使い分けるべきかが頻出の論点です。

試験で問われること

ITパスポート試験

  • 2進数のビットシフトという概念を理解します。
  • 論理シフトでは空いた桁に0が入ることを押さえます。
  • 算術シフトとの結果の違いが問われます。

基本情報技術者試験

  • 論理シフトと算術シフト(特に右シフト時の符号ビットの扱い)の違いが問われます。
  • ビット演算における論理シフトの用途(ビット抽出など)が問われます。
  • シフト演算の結果を求める計算問題が頻出です。