興味深い事実があります:
数 N の 2 の補数は、数 N から 1 を引いた 1 の補数と同じです
。
2's(N) = 1's(N-1)
以下の結果は明らかです。
2's(N) = 1's(N) + 1
2 番目の結果を使用して、最初の結果をどのように証明できますか?
興味深い事実があります:
数 N の 2 の補数は、数 N から 1 を引いた 1 の補数と同じです
。
2's(N) = 1's(N-1)
以下の結果は明らかです。
2's(N) = 1's(N) + 1
2 番目の結果を使用して、最初の結果をどのように証明できますか?
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