前提条件 – 負の 2 進数の表現
1の補数 2 進数の は、その中のすべてのビットを切り替えることによって得られる別の 2 進数です。つまり、0 ビットを 1 に、1 ビットを 0 に変換します。例:
Let numbers be stored using 4 bits 1's complement of 7 (0111) is 8 (1000) 1's complement of 12 (1100) is 3 (0011)>
2の補数 2 進数の 1 は、2 進数の 1 の補数に 1 を加えたものです。例:
Let numbers be stored using 4 bits 2's complement of 7 (0111) is 9 (1001) 2's complement of 12 (1100) is 4 (0100)>
これらの表現は、符号付き数値に使用されます。
の 主な違い 1 の補数と 2 の補数 1 の補数には 0 (ゼロ)、つまり正のゼロ (+0) である 00000000 と負のゼロ (-0) である 11111111 の 2 つの表現があるということです。一方、2 の補数では、ゼロの表現は 00000000 (0) の 1 つだけです。11111111 (-1) に 1 を加算すると、9 ビット長の 100000000 が得られるからです。 8 ビットのみが許可されるため、左端のビットは破棄 (またはオーバーフロー) され、正のゼロと同じ 00000000 (-0) が残ります。これが、2' の補数が一般的に使用される理由です。
もう 1 つの違いは、1 の補数を使用して数値を加算するときに、最初に 2 進加算を行ってから、エンドアラウンド キャリー値を加算することです。ただし、2 の補数にはゼロの値が 1 つだけあり、キャリー値は必要ありません。
n ビット数の 1 の補数の範囲は -2 からですn-1-1から2n-1-1 ですが、n ビットの 2 の補数の範囲は -2 からですn-12へn-1-1。
性能試験
2つありますn-11 の補数と 2 の有効な数値n2 の補数の有効な数値。
表形式での 1 の補数表現と 2 の補数表現の違い:
| 基準 | 1の補数 | 2の補数 |
| 意味 | 2 進数の 1 の補数は、すべてのビットを反転することで得られます。 | 2 進数の 2 の補数は、数値の 1 の補数に 1 を加算することで得られます。 |
| nビットで表現できる値の範囲 | -2^(n-1) + 1 から 2^(n-1) – 1 | -2^(n-1) から 2^(n-1) – 1 |
| ゼロの表現の数 | 2 つの方法 (すべて 0 とすべて 1) で表現できます。 | 一方向 (すべて 0) でのみ表現できます。 |
| 正と負の数の加算 | 符号なし 2 進加算と同じです。 | 符号なし 2 進加算と同じです。 |
| 数値の引き算 | 大きい数値から小さい数値を減算し、結果に符号ビットを追加します。 | 2 進加算を使用して、負の数を正の数に加算します。 |