フリーキーズ | 独学プログラミング

論理シフトとは

最終更新日

論理シフトとは、コンピュータや情報科学で用いられるシフト操作の一種で、数値の符号(正または負)を考慮せずに数値の桁(通常は2進数)を左または右に移動させることです。算術シフトとは異なり、論理シフトでは数値の符号は保持されません。論理シフトには、論理右シフトと論理左シフトの2種類があります。

ブロックを用いた例

論理シフトを理解するために、ある例えを用いて説明しましょう。数字の書かれたブロックが並んでいて、そのブロックを左右にスライドさせたいとする場合を想像してください。論理シフトでは、左端のブロック(符号付き数字の場合は符号を表す)を含むすべてのブロックを目的の方向に移動させます。ブロックが端から滑り落ちると消え、もう一方の端には「0」という数字を持つ新しいブロックが現れます。

2進数を使った例

論理的左シフト

論理的左遷:2進数0101は10進数5と等しいとします。論理的に1つ左シフトすると、2進数1010となり、10進数10に等しくなります。左端の桁(0)が右にシフトし、左側に新しい0が出現していることに注目してください。この場合、論理的左シフトは、実質的に元の数を2倍したことになります。

論理的右シフト

2進数の1101は、2の補数表現では10進数の-3と等しいとします。論理的右シフトを1つ適用すると、2進数0110となり、これは10進数6に等しくなる。左端の桁(1)が右にシフトし、左側に新たな0が出現しています。この場合、論理右シフトは元の数値の符号を変え、2で割って切り捨てたことになります。

まとめ

まとめると、論理シフトとは、計算機で使われるシフト演算の一種で、数値の符号を考慮せずに数値(通常は2進数)の桁を左または右に移動させるものです。論理右シフトと論理左シフトの2種類がある。論理シフトは、コンピュータのさまざまなデータ操作に役立ちますが、元の数値の符号を保持することはできません。