【高校情報】2進数の補数の求め方をわかりやすく解説
補数(ほすう)とはそもそも何??
まずは基本からね。
補数とは、
補数とは「足すと1桁増える数」になる相手のこと
よ。
まずは慣れ親しんだ10進数で考えてみましょう。
たとえば「37」。
これにいくつ足せば「100」、つまり一桁増えるかしら??
そう、63ね。
なぜなら、
37 + 63 = 100
になるから。つまり、63が「37の補数」なの。
2進数の補数の求め方がわかる2ステップ
今度は2進数で考えてみましょう。
「011」の補数は何になるかしら?

一緒に求めてみましょう。
次の2ステップを踏むといいわ。
一桁増えた2進数の最初の数を探す
まず、一桁増えた2進数の最初の数を探すの。
「011」は3桁だから、4桁の2進数の最初の数ってことね。
今回の場合、一桁増えた2進数の最初の数は
1000
になるわ。
だから、
011 + □ = 1000
になるような、□の数を求めればいいのね。この□が補数になるはずよ。
(一桁増えた2進数の最初の数) - (元の2進数)
そのためには、
1000 – 011
すればいいわね。つまり、
(一桁増えた2進数の最初の数) - (元の2進数)
を計算するの。
えっ、引き算のやり方がわからない??
そんなときは2進数の引き算のやり方を復習してね。
ってことで、
1000 – 011
を計算すると、
101
になるわ。

したがって、「011」の補数は「101」よ!
ぶっちゃけ補数の求め方で肝は2進数の引き算ね。
繰り下がりのテクさえ身につけておけば計算できるはずよ。
なぜ2進数で補数の計算が重要なのか??
でも、なぜ補数が重要なのかしらね??
めんどくさい計算やらすなって顔してるわね。
補数が重要な理由、それはズバリ、
コンピューターは引き算を得意ではないから
よ。
実はコンピューターの中では、基本的に「足し算」しかしていないの。
引き算専用の特別な回路を作るよりも、足し算の仕組みを使い回した方がシンプルだからよ。
そこで登場するのが補数。
補数を使うと、
A − B = A +(Bの補数)
の形に変えられるの。
つまり、減算を加算に変換できるというわけ。
ただし、ここで大事なポイント。
補数がきちんと機能するのは、同じビット数(同じ桁数)で計算しているときだけ
なのよ。
なぜなら、補数は
「そのビット数で表せる最大の値」を基準に作られているから。
3ビットなら 2³、
4ビットなら 2⁴、
というように、基準が変わってしまうの。
だからコンピューターは、
あらかじめビット数を固定した世界で計算しているのよ。
つまり補数とは、
「同じビット幅の世界で、引き算を足し算に変換するための魔法」
なの。
たとえば、さっきの
「011」の補数は「101」
で確かめてみましょうか。
110 – 011
をしたいときは、
110 + 011の補数
にする。
つまり、
110 + 101
ね。
これを計算すると、
1011
になる。

で、桁上がりの一番左の1を無視すれば、
011
になる。

これは
110 – 011
の計算結果と同じね。

補数は日常では差を求めたりする場面で利用されることが多いの。
例えば、差の計算やデータ通信でのエラー検出なんかにも補数は役立っているわ。
それじゃあ、またね!
