4

最上位ビットにキャリーがある場合、r-base 番号の r-1 補数はキャリーで終了する必要があることを知っています。

しかし、なぜそれを行う必要があるのか​​\u200b\u200bわかりません。

その理由は、ゼロの 2 つの表現に関するものであるとしか考えられません。

元:

 1 1 1 0    (-1)
 0 1 0 1    (+5)  
 ===============
10 0 1 1  =====>(0 1 0 0)
I just can explain it from the result that because its sum is positive, and 1's complement has two representations, so it should add one.

元:

 1 1 1 0    (-1)
 1 0 1 0    (-5)  
 ===============
11 0 1 1  =====>(1 0 0 1)
And I cannot explain it why should add one.

エンドアラウンドキャリーの本当の理由は何ですか?

読んでいただきありがとうございます。

4

1 に答える 1

11

エンドアラウンドキャリーは、実際にはかなり単純です。数値を符号なしと考えると、加算演算のモジュラスが r nから r n –1 に変更されます。簡単にするために、バイナリについて話しましょう。

4 ビットの 2 の補数演算を使用して (-2) + (-4) を計算してみましょう。

  1 1 1 0 (-2)
+ 1 1 0 0 + (-4)
---------- ------
1 1 0 1 0 (-6)

キャリービットは今のところそのままにしておきましょう。数値を符号なし整数として見ると、14 + 12 = 26 と計算されます。ただし、加算は 16 を法として行われるため、-6 を表す符号なし数値である 10 が得られます (正しい結果)。

1 の補数では、数値の表現が異なります。

  1 1 0 1 (-2)
+ 1 0 1 1 + (-4)
---------- ------
1 1 0 0 0 (-6)

繰り返しますが、キャリー ビットはそのままにしておきましょう。数値を符号なし整数として見ると、13 + 11 = 24 を計算しています。ただし、ラップアラウンド キャリーにより、加算は 15 を法として行われるため、-6 を表す 9 になります (正しい結果)。

したがって、4 ビットの 2 の補数では、-2 は 16 を法とする 14 に相当し、-4 は 16 を法とする 12 に相当し、-6 は 16 を法とする 10 に相当します。

また、4 ビットの 1 の補数では、-2 は 15 を法とする 13 に相当し、-4 は 15 を法とする 11 に相当し、-6 は 15 を法とする 9 に相当します。

符号付きゼロ:「符号付きゼロ」が得られる理由は、4 ビットで 16 の可能な数値があるためですが、モジュロ 15 演算を行う場合、0 と 15 は同等です。それだけです。

于 2012-10-18T11:06:00.207 に答える