シフト演算
読み方:シフトえんざん
別名:ビットシフト演算
【英】bit shift operation, shift operation
シフト演算とは、ビットの列を左または右にずらす操作のことである。
シフト演算のうち、2進数で羅列された各ビットを左にずらす操作を左シフト、右にずらす操作を右シフトと呼ぶ。プロセッサのレジスタの幅は固定であるため、シフトを行うことで左右どちらかのビットがあふれ出る。このあふれ出るビットと符号ビット(最上位ビット)の扱いによって、算術シフトもしくは論理シフトの2種類に大別できる。
算術シフト(左シフト)は、符号ビットをそのまま残し、あふれ出たビットを切り捨て、空いたビットに0を挿入する。
算術シフト(右シフト)は、符号ビットをそのまま残し、あふれ出たビットを切り捨て、空いたビットに符号ビットと同じ値を挿入する。
論理シフトは、符号ビットは意識せず、あふれ出たビットを切り捨て、空いたビットに0を挿入する。
ビットを1つずらすことで左シフトは元の値の2倍(2^n乗)、右シフトは元の値の1/2倍(1/2^n乗)になる。この法則を利用して、シフト演算を用いて乗算や除算を行うことができる。理論上、算術演算子を用いた通常の演算より処理速度が速くなるが、一般的なアプリケーション開発において近年のコンパイラ性能向上により最適化が適切に働くのでシフト演算で記述するメリットがないこと、ソースコードの可読性に影響があることから、特別な場合を除き、乗算や除算をシフト演算で記述することは少ない。
|