補数とは「ある数」を「目標の数」にするために必要な数のことです。
例えば、「1」を「10」にしたい場合、「9」が補数となります。
「10」を「100」にしたい場合、「90」が補数です。
10進数における補数
10進数の補数には、「9の補数」と「10の補数」があります。
とりあえず2種類あるんだな、と思ってもらえれば
9の補数は、「ある数」を「ケタが増えないギリギリの数」にするために必要な数です。例えば、「50」という2ケタが数字があるとしましょう。2ケタの数字でケタが増えないギリギリといえば、「99」ですね。つまり、「50」を「99」にするために必要な数字は「49」ですね、これが9の補数となります。
10の補数は「ある数」を「ケタが丁度増えた時の数」にするために必要な数です。例えば、2ケタの数字に対して、ケタが丁度増えた時の数といえば「100」になります。すなわち、「50」を「100」にするために必要な数字は「50」なので、これが10の補数となります。
2進数における補数
2進数の補数には、「1の補数」と「2の補数」があります。
1の補数は「ケタが増えないギリギリにするために必要な数」で、2の補数は「ケタが丁度増えるために必要な数」になります。
それでは、10進数における「5」の補数を、2進数で考えてみましょう。
「5」は、2進数だと「101」となります。これが「111」になるために必要な数が1の補数、「1000」になるために必要な数が2の補数となります。
それぞれ計算してみると、以下のように、1の補数は「10」、2の補数は「11」となります。
実は、わざわざ計算しなくても補数が作れる裏技があるのです。2進数の補数においては、このような法則性があります。
- 1の補数..1と0を反転させる
- 2の補数..1の補数に1を足す
この法則性を利用すれば、何も考えなくても2の補数を計算することが出来ます。
補数はどんなときに使われるのか
コンピュータは、0と1しか処理出来ません。マイナスの符号さえも使えないので、我々人間のように正の数と負の数を判別できません。
マイナスの符号を使わずに負の数を表現するために使用されるのが補数なのです。
歩数を用いてマイナスの数を表すことで、引き算の処理を「補数を加算する」という方法で行うことができるようになり、回路が複雑にならずに済むのです。
このように、先頭の文字が0なら正の数、1なら負の数というようにして判定する表現方法があります。
ちなみに、負の数のほうが、正の数に比べて表せる数が1つ多くなります。
「0」を正の数として扱うためだね
また、最大桁を符号として用いるこの方法では、符号無しに比べて表現できる数が少なくなります。
コメント