元の2進数の各ビットを反転(0↔1)したものが「1の補数」です。元の数と1の補数を足すと必ず全ビット1(=255)になる性質を確認しながら学びましょう。
1の補数とは、ある2進数の各ビットを反転(0は1に、1は0に)した数のことです。たった1ルールで作れるので、コンピュータの回路でも簡単に実装できます。
数学的には「全ビットが1の値(8ビットなら255)から元の数を引いた値」と等しくなります。
・181(10110101)の1の補数 = 74(01001010)
・255 - 181 = 74(一致)
上のツールでビットを1つだけクリックして反転させてみてください。元の値が変わると、1の補数では反対側のビットがすぐに切り替わります。これが「1の補数 = 全ビット反転」のシンプルさです。
1の補数の求め方は非常に単純で、左から右へ順番にビットを反転するだけです。8ビットでも32ビットでも、同じ操作を繰り返せばできます。
確実に求められたかを確かめるコツは「足し算してみる」ことです。元の値と1の補数を加算すると、必ず全ビット1(8ビットなら255)になります。これは反転前後で各桁が必ず「0と1のペア」になるため、足すと「1」になり、それが全ての桁で起きるからです。
ツールの下部にある検算ボックスに 元 + 1の補数 = 255 と表示されているか確認してください。どんな値でこの計算をしても、必ず255になります。
1の補数は単独でも使われますが、コンピュータでよく使われるのは2の補数のほうです。両者の違いは小さく、「2の補数 = 1の補数 + 1」という関係にあります。
2の補数が好まれる理由:
・0の表現が一つだけになる(1の補数では「+0」と「-0」が両方存在してしまう)
・引き算が足し算に変わるので、加算回路だけで減算もできる
・表現できる負の数が1つ多い(8ビットなら -128 まで)
1の補数や2の補数を求めるときは、まず1の補数を出してから+1するのが安全です。手順を分けることでミスが減ります。1の補数は2の補数を作るための踏み台、と覚えておきましょう。