算術シフトとは何ですか?
算術シフトは、数値を掛けるか分割する方法です。算術シフトは通常、バイナリ番号で実行されます。ただし、この概念は、任意の番号付けスキームに適用できます。
以下は、ベースとして10個の10進数を使用した例です。 250が算術的に左にシフトされると、結果の数は2500で、250は10を掛けます。 0250として4桁を使用して250が表現される場合、算術的に右にシフトします。結果の数は0025で、250は10で割っています。したがって、算術シフトは、数値を数値スキームのベースで乗算または分割する方法であると言う方が正しいことです。
バイナリ番号はベースとして2を持っています。それらは0Sおよび1Sを使用して表され、署名または署名なしで表現できます。算術左シフトでは、数字は左に1つのスペースでシフトされ、右にゼロが配置されます。算術的な正しいシフトでは、数値は右に1つのスペースによってシフトされ、左端の数値が保持されます左にエド。一般に、シフトは「n」スペースの場合があります。
符号なしのバイナリ数では、各位置は2のパワーであるため、バイナリ1は10進数、バイナリ10は小数2、バイナリ100は小数4などです。したがって、0110は10進6です。算術左シフトが実行されると、結果の数は1100です。
数値は正と負の両方である可能性があるため、署名されたバイナリ番号が使用され、左端ビットは正またはゼロで0、負の数で1が使用されます。したがって、4ビット数の場合、10111は10進7であり、最大の正の数値です。負の数に最も頻繁に使用されるスキームは、小数-1として1111を持ち、これは1000までずっと下がります。これは小数-8です。
たとえば、1101年の算術左シフトは1010になり、1010年になります。小数-6です。 1010の算術的権利シフト(10進数-6)は1101になります。これは小数-3です。左端のビットが保持されていることに注意してください。
算術シフトは、数値スキームのすべての数値の乗算と分割に常に対応するとは限りません。数値スキームの両端に制限があります。たとえば、0111の左シフト、10進7は小数-2を与え、1111の右シフト、10進数は小数-1を与えます。
算術シフトには固有のシンプルさがあり、シフトは通常の乗算や分裂よりも実行するのがはるかに高速です。そのため、コンピューターは、シフトユニットまたはシフトレジスタと呼ばれる比較的単純なメカニズムを使用して、この操作をサポートします。精通したプログラマーは、上記の制限が回避されるか、世話をしている限り、この操作を利用しています。