-1

以下の行をいくつかの良い例とともに説明していただけますか。

nによる左算術シフトは、2 nを乗算することと同じです (値がオーバーフローしない場合)。

と:

2の補数のnによる右算術シフトは、2 nで除算し、負の無限大に向かって丸めることと同じです。2進数が1の補数として扱われる場合、同じ右シフト演算により2 nで除算され 、ゼロに向かって丸められます。

4

3 に答える 3

3

私たちがよく知っているベースで何が起こるかを説明します:10。

基数10で、数値N=123があるとします。ここで、この数値を左のk = 3の位置に「シフト」し、空の数字を0で埋めます。したがって、X=123000になります。

X = N *10kであることに注意してください

2進数の場合も同様です。

 Example 1 (base 10)   |  Example 2 (base 2)
                       |
 N        =    123     |  N       =   110101 (53 in base 10)
 k        =      3     |  k       =        2 (in base 10)
 N << k   = 123000     |  N << k  = 11010100 (212 in base 10)
                       |
 10^k     =   1000     |  2^k     =      100 (in base 2; 4 in base 10)
 N * 10^k = 123000     |  N * 2^k = 11010100 (53 * 4 = 212 in base 10)
                       |

右シフトの場合は、プロセスの単なるミラーであり、基数10でも類似しています。たとえば、基数10に123456があり、右3桁を「シフト」すると、123になります。これは123456/1000です。 (整数除算)、ここで1000 = 103

于 2010-05-10T07:34:22.887 に答える
1

http://en.wikipedia.org/wiki/Arithmetic_shift

于 2010-05-10T06:43:33.730 に答える
0

独自の例を作成するのは簡単です。

101バイナリである5つを考えてみましょう。一度左にシフトすると1010、10のバイナリが得られます。もう一度やり直すと、1010020個などが表示されます。

于 2010-05-10T07:41:10.960 に答える