3

興味深い事実があります:

数 N の 2 の補数は、数 N から 1 を引いた 1 の補数と同じです

2's(N) = 1's(N-1)

以下の結果は明らかです。

2's(N) = 1's(N) + 1

2 番目の結果を使用して、最初の結果をどのように証明できますか?

4

1 に答える 1

1

2 の補数と 1 の補数はどちらも、CPU が処理しやすい方法で、負の数の 1 つの領域を正の数の領域にマップします。

8 ビット数の場合、1 の補数は -127..-0 を 128..255 にマップし、2 の補数は -128..-1 を 128..255 にマップします。

1 の補数と 2 の補数をもう一度実行できるため、1 の補数と 2 の補数を繰り返し適用すると、同じ場所に戻るだけです。(したがって、正の数について心配する必要はありません。)

提供された範囲を見ると、128 から 255 までの各数値が 1 つの数値に置き換えられており、この数値は 2 の補数と 1 の補数との間に 1 の差があります。

数学的に言えば (8 ビットの数値の場合):

2's(N) = 1's(N) + 1
2's(N) = N ^ 0xFF + 1
2's(N) = N ^ 0xFF + 0xFE ^ 0xFF
2's(N) = (N + 0xFE) ^ 0xFF
2's(N) = (N - 1) ^ 0xFF
2's(N) = 1's(N-1)

各ステップの理由:

Step 1: Given
Step 2: Definition of 1's complement
Step 3: Identity
Step 4: Distribution
Step 5: Identity (within 1's complement system)
Step 6: Definition of 1's complement
于 2012-08-25T16:15:03.667 に答える