年収のカラクリ ~年商5億円を超えた経営者たちの、自分の年収の決め方の技~
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/