読者です 読者をやめる 読者になる 読者になる

K&K Blog

Kenji(31) & Kanako(27) の夫婦Blog。2015.11月長男誕生。パパママ2年目奮闘中

コンピュータは2進数で計算しているらしいけど、なぜ10進数じゃないの?って人にエンジニアが答える

こんにちは

ケンジです。

 

コンピュータは2進数で計算されているって聞くけど、なんで10進数じゃないの?

という人にエンジニアが答えます。

f:id:k17k24:20160110215949j:plain

そもそも2進数ってなんだっけ?

10進数は0~9の10コの数字だけで値を表現したものです。

2進数では0~1の2コの数字だけで値を表現します。 

 

例えば0~10の10進数を2進数で表現すると以下のようになります。

f:id:k17k24:20160110190819p:plain

10進数は1桁が9まで行くと、次は繰り上がり2桁が1になります。

2進数は1桁が1まで行くと、次は繰り上がり2桁が1になります。

 

2進数では10という値を表現するだけでも4桁必要です。

「1万とか、2万とか一体何桁使わなければならないのか。。。」

と考えると、2進数は人間にとっては大変使いづらい進数です。

ではなぜコンピュータは10進数でなく、2進数で処理をするのでしょうか。

 

コンピュータの基本は電気が流れているか、流れていないか

人間にとっては使いづらい2進数でコンピュータの処理を行うのには当然理由があります。 

コンピュータは電気で動いていて、その電気を上手く使って計算を行っています。

実はコンピュータは電気が流れている時を1、流れていない時を0と対応付けて処理を行っています。

ただそれだけでは計算はできません。

2つの数値を足して結果を出すことができないと計算はできません。

つまり2進数で0+0=00、0+1=01、1+1=10(繰り上がり)という演算ができるようになって初めて計算機(コンピュータ)と言えるのです。

例えば繰り上げ足し算をできるようにするためには、ANDとORとNOTというものが必要です。

 

ANDとORとNOTとは

計算はANDとORとNOTというものを使うことで、繰り上がりの足し算を行うことができます。

これも数学で出てくるものです、簡単に説明すると、

ANDは両方の数が1なら1、それ以外は0

ORは片方の数が1なら1、それ以外は0

NOTは1なら0、0なら1

というものです。

マトリックスで表すとこんな感じです。

f:id:k17k24:20160110210023p:plain

これを記号で表すときは以下のものを使います。

f:id:k17k24:20160110210407p:plain

A、Bに0か1を入力するとXに結果が出てくると考えてください。

例えば、ANDならA=0、B=1の時はX=0です。

ANDはA=1、B=1の時だけ、Xに電気が流れると考えてください。

 

繰り上げ足し算を作る

先ほどのAND、OR、NOTを組み合わせて繰り上げ足し算しようとすると、このような構成になります。

f:id:k17k24:20160110212517p:plain

 

では実際にちゃんと繰り上げ計算ができるのか確認してみましょう。

下の図はA=1、B=1を入力した場合の結果です。

f:id:k17k24:20160110212816p:plain

黒丸は分岐点です。そこからは両方に電気が流れます。

電気が少しでも流れていれば1、流れていなければ0と考えてください。

結果を見ると1桁が0、2桁が1なので結果は10。

2進数では1+1=10なので計算できています。

 

A=0、B=1を入力した場合は、1桁めが1、2桁めが0になるので、結果は01。

0+1=01なのでちゃんと計算できていますね。

f:id:k17k24:20160110212635p:plain

今回紹介したこのAND、OR、NOTの組み合わせで作ったものを半加算器と言います。

高専や大学の電子回路を学ぶ人たちは必ず授業で教わる構成です。

 

最後に

半加算器だけだと2桁の繰り上げまでしかできませんが、

半加算器を応用して作る全加算器を使えば、3桁以上の計算もできるようになります。

そしてもっと複雑な回路も。。。私は基本回路しか学んでいませんが。。。

そのような複雑な回路を小さくまとめたものを集積回路と言います。

先ほどの半加算器の完成版が1つにまとめられれば、

他の人はそれを買ってA、Bに0か1を入力すれば結果が出てくるのですから、

1から作る必要がなくなり簡単で、すぐに動かすことができます。

こうしてどんどん技術が進歩し、CPU、メモリ、HDDなど役割ごとにパーツが分かれ

企業競争で高性能化、低価格化され、今日のパソコンやスマホが出来上がりました。