「arithmetic shift」とは? – 2進数のビット列を左右にシフトする演算の一種について解説

Explanation of IT Terms

「arithmetic shift」とは? – 2進数のビット列を左右にシフトする演算の一種について解説

「arithmetic shift(算術シフト)」は、コンピュータサイエンスにおいて、2進数のビット列を左右にシフトする演算の一種です。この演算は、ビット演算子の一種として利用されることが多く、プログラミング言語やCPUの命令セットに含まれていることが一般的です。この記事では、算術シフトについて詳しく解説していきます。

算術シフトには2種類ある

算術シフトには、左シフト(Logical Shift Left: LSL)と右シフト(Logical Shift Right: LSR)の2種類があります。LSLは、ビット列を左にシフトして、右側に0を追加する演算です。例えば、以下のような2進数があったとします。

“`
0010 1011
“`

このビット列を1ビット左にシフトする場合、LSLを使用すると以下のようになります。

“`
0101 0110
“`

左側に0が追加されていることがわかります。一方、LSRは、ビット列を右にシフトして、左側に0を追加する演算です。以下のような2進数があったとします。

“`
1011 0010
“`

このビット列を1ビット右にシフトする場合、LSRを使用すると以下のようになります。

“`
0101 1001
“`

右側に0が追加されていることがわかります。

算術シフトと算術右シフトの違い

算術シフトには、LSLとLSRの他に、算術右シフト(Arithmetic Shift Right: ASR)という演算もあります。ASRは、ビット列を右にシフトして、左側に符号ビットを追加する演算です。符号ビットとは、2進数の最上位ビットのことであり、0の場合は正の数、1の場合は負の数を表します。

たとえば、以下のような2進数があったとします。

“`
1001 0011
“`

このビット列を1ビット右にシフトする場合、ASRを使用すると以下のようになります。

“`
1100 1001
“`

符号ビットである最上位の1が右側に移動しています。つまり、このビット列は負の数になっています。一方、LSRを使用した場合には以下のようになります。

“`
0100 1001
“`

符号ビットが0になっているため、このビット列は正の数になっています。

まとめ

算術シフトは、コンピュータサイエンスにおいて非常に重要な演算の一つです。LSLとLSRは、ビット列を左右にシフトする演算であり、ASRは算術右シフトと呼ばれ、右側に符号ビットを追加する演算です。これらの演算を適切に使用することで、より高度なプログラミングやCPUのプログラムを作成することができます。

参考記事

参考サイト

合わせて読みたい

【Google Chrome】右クリックで翻訳がでなくなった時の対策方法の決定版