Contents
「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のプログラムを作成することができます。