読み方 : ろんりシフト

論理シフト 【logical shift】

概要

論理シフト(logical shift)とは、ビット列を指定した数だけ右または左にずらすビットシフト(bit shift)操作のうち、正負の符号ビットの存在を考慮しないもの。全ビット一律に移動させる。

解説 ビットシフト操作はビット列を右または左に指定の数だけ移動する操作だが、論理シフトでは最上位ビットも他の残りのビットと区別せず、ビット列全体を左右に移動させる。移動する方向と反対側に新たに現れるビットには「0」を補充する。

コンピュータでは負の数を表現したい場合に、最上位ビットと正負の符号を表す符号ビットとして、0または正なら「0」、負なら「1」とする規則を用いることが多いが、論理シフトは符号ビットを特別視せず移動してしまうため、符号付き整数の算術的な演算に用いることはできない。

例えば、「10011100」を右に2ビットシフトすると「00100111」となる。これらのビット列を符号付き整数とみなした場合、「10011100」は十進数で「-25」だが、「00111001」は「57」となる。正の数を右に2ビットシフトすると4で割るのと同じ効果があるが、負の数では算術計算は成り立たない。

一方、最上位ビットを固定して変化させず、残りのビットを左右に移動させる処理を行うビットシフト操作を「算術シフト」(arithmetic shift)という。左にシフトする場合は右端に「0」を補充するが、右にシフトする場合は左端に符号ビットの値(負なら「1」)を補充する。これにより、負の数をシフトしたときも1ビット移動するごとに2倍あるいは1/2倍となることが保証される。

(2022.12.14更新)

他の用語辞典による「論理シフト」の解説 (外部サイト)

資格試験などの「論理シフト」の出題履歴

▼ 基本情報技術者試験
平27修1 問1】 16ビットの2進数nを16進数の各桁に分けて,下位の桁から順にスタックに格納するために,次の手順を4回繰り返す。a,bに入る適切な語句の組合せはどれか。
平25秋 問2】 32ビットのレジスタに16進数 ABCD が入っているとき,2ビットだけ右に論理シフトした値はどれか。
平25春 問1】 16ビットの2進数nを16進数の各桁に分けて,下位の桁から順にスタックに格納するために,次の手順を4回繰り返す。a,bに入る適切な語句の組合せはどれか。
平23秋 問1】 16ビットの2進数nを16進数の各桁に分けて,下位の桁から順にスタックに格納するために,次の手順を4回繰り返す。a,bに入る適切な語句の組合せはどれか。
平22修1 問1】 16ビットの2進数nを16進数の各桁に分けて,下位の桁から順にスタックに格納するために,次の手順を4回繰り返す。a,bに入る適切な語句の組合せはどれか。