左シフト 【left shift】

概要

左シフト(left shift)とは、ビットを指定した数だけ移動させるビットシフト(bit shift)操作のうち、ビットを上位側へ移動させるもの。ビットの上位側を左、下位側を右に記す記法が浸透しているためこのように呼ばれる。

ビットを指定した桁数だけ左に移動する操作を意味する。全体を一律に移動する「論理シフト」(logical shift)の場合、左側に溢れたは消滅し、右側の空いたビットには「0」が補充される。例えば、「00001010」を左に2ビットシフトすると「00101000」となる。

ビットを(正の)整数とみなしたとき、左に1ビットシフトするごとにが2倍になる。先の例で「00001010」は十進数で「10」、2ビット左シフトした「00101000」は「40」であり、ちょうど4倍になっている。これを利用して、整数の計算処理の一部にシフト命令を取り入れることがある。

一方、コンピュータでは負の整数を表したいときに最上位ビットで正負の符号を表す(「0」なら0または正、「1」なら負)場合があるが、これを考慮したビットシフト操作を「算術シフト」(arithmetic shift)という。算術左シフトでは最上位の符号ビットは移動せず固定し、残りのビットを左に移動する。左端からは論理シフト同様「0」を補充する。これにより、負の数の計算においても、左に1ビットシフトするごとにが2倍になるという関係が維持される。

プログラミング言語の中には左シフトを表す演算子を用意しているものがある。C言語やその記法を受け継ぐ多くの言語では「<<」が左シフト演算子となっており、「x=<<2;」と記述すると「xを左に2ビットシフトする」という意味になる。これとは逆に、ビットを右(下位側)に移動するシフト操作は「右シフト」(right shift)という。

(2022.12.14更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる