引き算を足し算で実現する方法

  • このエントリーをはてなブックマークに追加

引き算を足し算で実現って、意味不明ですよね。
でも、実はコンピューターの内部では普通に行われているんです。

補数を使うと引き算を足し算で表現することが可能になります。
この方法を理解するには、まず補数の説明が必要ですね。

桁上がりする寸前の数字、つまりあと1足したら桁上がりする数字はなんでしょう。
日常良く使っている10進数で考えて見ましょう。「9」が該当しますね。

9に1を足すと、

9+1=10

となり、桁上がりします。

ある数字にいくつ足すと(補うと)9になるかを考えるのが補数という考え方です。
つまり、
1の補数は8
2の補数は7
3の補数は6
4の補数は5



という具合です。
この計算は暗算でできますね。

この補数を使うと引き算を足し算で実現することができます。
では、具体的な計算をしてみましょう。

9323 - 3651

を計算してみます。

まず、普通の引き算を筆算でやってみましょう。
実際に紙に書いて計算してみてください。

9323
-)3651
-------
5672

どうでしょう。
計算できました?

では、いよいよ補数を使って計算してみましょう。
まず引く方の数、3651の補数を考えます。
各位がそれぞれ足して9になれば良いので、
6348
と簡単にわかります。
次にこれに1を足します。(これがミソです)
6349

で、9323に足します。

9323
+)6349
-------
15672

この結果をよく見て下さい。
1万の位の桁上がりを無視すると5672となり、先ほどの引き算の結果と一致しています。

コンピューターは足し算は得意ですが引き算が苦手です。
そこで引き算を足し算で実現できれば都合が良い訳です。
コンピューター内部では2進数が採用されています。
2進数は1と0しか使いませんので、

1の補数は0
0の補数は1

となり、0と1を反転するだけで補数が得られます。

コンピューターはこのように簡単に得られる補数を利用して、苦手な引き算を足し算で実現しているんです。

ブログ村ランキングパーツ
  • このエントリーをはてなブックマークに追加