========================================
ワンコンプリメントとは何ですか?#
ワンコンプリメントは、負の数を表すために正の数を使用する方法です。
========================================
例#
- 例えば、-1 を 8 ビットの 2 進数で表す場合、1(00000001)のワンコンプリメントを求めるだけです。00000001 の各桁の 0 を反転させて 1 にし、1 を反転させて 0 にし、そして反転した結果に + 1 を加えると、最終的に - 1(11111111)に変換されます。
- もう一つの例として、-5 を表す場合、5 の 2 進数は 0101 ですが、0101 を反転させて + 1 を加えると、1011(-5)に変換されます。
=======================================
- 実際には、先生が教えた概念について心配する必要はありません:
正の数の元の反転コンプリメントは同じですが、負の数の元の反転コンプリメントは計算する必要があります。
それに加えて、コンピュータ内には元のコードではなく、補数が格納されています。
実際には、コンピュータ内にはこのような数字が格納されているだけであり、負の数を表すために補数が使用されているだけです。
=======================================
では、なぜ負の数を表すために補数を使用するのでしょうか?#
すべての 10 進数の計算はコンピュータ内で 2 進数の計算です。すべての減算はコンピュータ内で加算です。もし補数を使用しない場合、1-1 は - 2 になります。例えば
0001-------------(1)
1001-------------(-1)
0001+1001=
1010-------------(-2)
そのため、私たちは補数を使用して負の数を表す必要があります
0001-------------(1)
1111-------------(-1)
0001+1111=
10000------0000-------(0)
=======================================
なぜ補数と呼ばれるのですか?#
おそらく、ある数とその補数を加えると 0 になるからです。実際に考えてみれば、-5 を表すときには 5 を使用して表現されており、したがって - 5 と 5 は互いに反対の数です。
=======================================
小さなヒント:#
数とその補数は互いに反対の数であるため、補数 ---> 反転 + 1---> 元の数に変換されます。
-5(1011)------ 反転 + 1-------5(0101)