知っておきたいDXの基本 コンピューターは、引き算が出来ないって本当?

松本尚典

松本尚典

テーマ:情報処理 コンピューター


1.コンピューターを覗いてみよう!


毎日、自動販売機で飲料を買っている消費者が、自動販売機の内部の仕組みがわかっていないように、私たちは、毎日、パソコンを使っていますが、その基本的な仕組みをわかっていません。

僕のコラムでは、今後も、コンピューターや情報通信、そして更にAIや、その基礎を支えるデーターサイセンスの領域に踏み込んで、毎日使用しているツールをあけて、その仕組みを覗くように、その構造を解説する記事もアップしていきたいと思います。

読者の方々には、それによって、より、情報通信や、AIを身近に感じ、興味を持っていただけるものと思います。

2.コンピューターは、引き算をするのに、足し算を使って計算している


さて、今回のコラムは、コンピューターって、引き算ができない!という話です。

え! そんな馬鹿な!
自分は、毎日、Exelのセルに、マイナス記号を入力して、引き算をちゃんとやってるよ!

と、皆さん、そう思われますよね。

実は、皆さんが、マイナス記号を使って、コンピューターに引き算の指示をした場合、コンピューターは、足し算の演算を使用して、引き算の計算をしているのです。

なぬ??? どういうことなのか?

これを、皆さんにわかりやすく解説し、コンピューターの引き算の演算の仕組みを、一緒に解明してゆきましょう。

3.コンピューターの頭脳は、2進数でできている


まず、引き算の演算の話をするうえで、もっと基礎的な話から、スタートします。

我々人間は、日常生活で計算をする際、10進数の世界で演算を行っています。

4+3=7


例えば、このような計算は、10進数の計算です。

10進数というのは、0~9までの10個の数の次は、一桁あがり、10となるから、10進数です。

一方、コンピューターは、すべてYes か Noの2つの要素で演算を行っています。
従って、2進数で演算をしています。

上記の計算では、

(10進数)4→(2進数)100
+(10進数)3→(2進数)011
(10進数)7→(2進数)111


こう演算します。

4.コンピューターは、足し算で、引き算・割り算・掛け算などをする


さて、では、引き算の場合、どうなるでしょうか?

(10進数)4→(2進数)100
―(10進数)3→(2進数)011
(10進数)1→(2進数)001


我々人間が、2進数で引き算をすると、こうなります。

でも、足し算に比べて、この計算、難しいと思いませんか?
そうなんです。二進数の場合、引き算は、足し算に比べて、とても、やっかいなのです。

そこで、コンピューターは、引き算を、すべて足し算を使って演算をしているのです。

5.引き算を足し算で行うって、どうすればいいの?


さあ、ここからが、数学の世界に入ります。

引き算を、足し算を使って行うって、どうすればいいの?

先ほどの計算、

4-3=1

を使って、考えてみましょう。

数学の世界では、こう考えます。

4+(―3)=1

従って、4とマイナス3を足せば、答えがでます。
ここで、マイナス3という数字を、正の数字で表現する数学の方法が、10の補数です。

10の補数とは、10進数で、その数字に「ある数字」を加えて桁上がりする、「ある数字」のことを言います。

3+X=10
この場合、X=7ですね。

そこで、―3の「10の補数」は、7であると計算できます。

この10の補数を使うと、足し算で引き算ができてしまうというのが、数学の法則です。

4+7=11
この桁上がりの和を切り捨てると、1。

はい!
この計算が、補数を使って、負の数字を正の数字で表現し、足し算を使って引き算の演算をする方法です。

6.2進数の引き算を、補数を使って行う方法


では、これまで話をしてきました、補数を使って引き算を足し算で行う方法を、2進数で考えてみましょう。

10進数で考えるよりも、ずっと難しくなりますが、ついてきてください。

2進数の補数とは、2進数で、その数字に「ある数字」を加えて桁上がりする、「ある数字」のことを言います。

10進数の3は、先ほどみました通り、2進数では、011ですね。

では、011の2の補数は、いくつでしょうか?

つまり、011に、2の補数の数字を加えると、桁上がり、つまり、1000になる数です。
これは、101ですね。

この、2の補数はどうやって求めればよいのでしょうか?

作業1 数をすべて反転させる 011→100
作業2 その数に1を加える  100+1→101


3を2進数で表記した011の、2の補数は、101であることがわかりました。

そこで、4の2進数100と、3の2の補数101を加えてみてください。

(10進数)4        →(2進数)100
+(―3の2進数)011の(2の補数)→ 101
(2進数)1001

最後に、この桁あがりの4桁目の数 1を消去します。


001ですね。これが、コンピューターが行っている引き算の演算の仕組みです。

これを、引き算で検証してみましょう。

(10進数)4→(2進数)100
―(10進数)3→(2進数)011
(10進数)1→(2進数)001


はい。結果が合いましたね。

皆さんは、日頃、10進数を使っているため、2進数にアタマが慣れていないと思いますが、コンピューターは、すべて、2進数で演算しています。私たちからみると、極めて複雑に思える演算を、猛烈なスピードで行うことができるわけです。

7.2進数の引き算を、コンピューターはデジタルの論理回路で行っている


では、次に、上記の計算を、コンピューターは、どのような回路で行っているのか、について説明しましょう。

コンピューターは、デジタルの回路で、演算を行っています。

では、このデジタルって、一体なんでしょうか?
「機械っぽい、っていうこと?」

違います。

時計で考えてみてください。

アナルグ時計というのは、針がぐるぐる回っている時計のことです。
それに対して、デジタル時計というのは、どうなっていますか?

時間を、24:30のようにあらわしている時計ですよね。

そう、デジタルとは、「区切りのある」という意味です。

針がぐるぐる回っている時計は、区切りがありませんね。だから、アナログです。

コンピューターは、デジタルの論理、つまり、区切りのある論理で、演算を行います。
2進数の「001」は、3つの区切りで、コンピューターは情報を把握します。

この区切りごとに、先ほどの2の補数の演算をどう行っているかを観ましょう。

100
+101
1001

●1桁目が半加算機、2桁以上は、全加算器

まず、1桁めをみましょう。

1桁目に入ってくる数字の可能性は、2進数の場合、4通りしかありません。

0+0、1+0、0+1、1+1の、4通りですね。

この入っていくる数字の組み合わせに対して、
0+0→00、1+0→01、0+1→01、1+1→11という足し算を行うのが、1桁目の演算です。

この演算の結果の2桁めは論理積(AND)の演算、1桁めは排他的論理和(EOR)になっています。このような組み合わせで演算を行う装置を半加算機と言います。

一方、2桁目以上は、上記の半加算機の計算に加え、下の桁から繰り上がってくる数字の情報を、更に加えて演算をする必要があります。

この桁上がりの演算は、論理和(OR)になっています。そのため、2桁目以上は、半加算機に、論理和(OR)を加えた演算を行っています。このような装置を、全加算器と呼びます。

こうして、デジタルで区切りのある桁ごとに、全加算器と半加算機が組み合わされており、その各桁が瞬時に自分の演算を行うことで、コンピューターは、瞬時に、私たちにとっては、難解に感じる計算を、行ってくれているのです。

以上が、コンピューターが、引き算を行う仕組みの話でした。

続く

松本尚典の中小企業経営者支援コンサルティングサービス

https://mbp-japan.com/tokyo/yoshinori-matsumoto/service1/5002501/

\プロのサービスをここから予約・申込みできます/

松本尚典プロのサービスメニューを見る

リンクをコピーしました

Mybestpro Members

松本尚典
専門家

松本尚典(経営コンサルタント)

URVグローバルグループ 

経営者の弱みを補強して売上を伸ばし、強みをさらに伸ばして新規事業を立ち上げるなど、相談者一人一人の個性を大切にしたコンサルティングで中小企業を成長させる。副業から始めて、独立で成功したい人も相談可能。

松本尚典プロは朝日新聞が厳正なる審査をした登録専門家です

プロのおすすめするコラム

コラムテーマ

コラム一覧に戻る

プロのインタビューを読む

年商5億円の壁を突破したい社長のための経営コンサルタント

  1. マイベストプロ TOP
  2. マイベストプロ東京
  3. 東京のビジネス
  4. 東京の経営コンサルティング
  5. 松本尚典
  6. コラム一覧
  7. 知っておきたいDXの基本 コンピューターは、引き算が出来ないって本当?

松本尚典プロへの仕事の相談・依頼

仕事の相談・依頼