基本情報技術者 PR

【基本情報】コンピュータが理解できるのは0と1だけ?!

記事内に商品プロモーションを含む場合があります

コンピュータは電気で情報を扱う

コンピュータは流れてくる電気を制御して情報を表現します。では、電流は0~10の数字をどう表現するのでしょうか。

コンピュータには流れてくる電流を検知する部品が存在します。最高で5Vまで検知出来る部品なら、0Vの時は「0」、5Vの時は「10」、1.5Vの時は「3」という判別が出来そうです。

しかし、コンピュータは膨大な量の数字を高速で正確に処理する必要があります。これを実現するのに微妙な電流を制御する仕様は果たして合理的と言えるでしょうか?電子部品が少しでも劣化したら正確性が損なわれそう、膨大な量のデータを扱うとなるとかなり繊細な制御が必要になり処理速度が落ちそう、こう考えると難しそうな気がしますよね。

コンピュータの電子回路で微妙な電流の強さを扱うのは現実的に難しそう

では、もっと単純に考えてみます。

下の図のように電流が流れたかどうかの2択ならば電流の制御は簡単そうです。電流が流れたらONで電流が流れていなければOFFのように判断すれば良いからです。実際コンピュータ内の電子部品は電流の有無で情報を制御します。

2進数で全てを表現する

コンピュータは0と1しか使えない

先程説明したように、コンピュータ内の電子部品は電流の有無だけで情報を制御します。

電流が流れていない時は「0」、電流が流れている時は「1」として情報を受け取ります。
では、0と1だけで様々な数字を表現することは可能でしょうか?

2進数とは

2進数とは0と1だけで数字を表現する方法です。ちなみに、普段使っている数字表現は10進数と呼ばれ、0~9の10個の数字を使って数字を表現します。

10進数での数字の表現方法

10進数では、0,1,2,3,4,5,6,7,8,9と数字が上がります。では、9より1つ大きい数字はどう表現されるでしょうか。9より大きい1桁の数字は存在しないので、桁数を上げることで9より大きい数字を表現します。9を「09」と表現すると、09より1つ大きい数字は2桁目を1つ上げて、1桁目を0に戻した「10」になります。

2進数での数字のカウントの仕方

2進数も全く同じ考え方で数字をカウントします。ただし、2進数では0と1しか使えません。

2進数でも0,1と数字が上がります。しかし、2進数では1より大きい1桁の数字は存在しないので、1の次に大きい数字を表現するには桁数を上げる必要があります。1を「01」と表現すると、次に大きい数字は2桁目を1上げて、1桁目を0に戻した「10」になります。

では、10,11と続いた次の数字は何になるでしょうか。11を「011」と表現すると、次の数字は3桁目を1上げて、それ以前の桁を0に戻した「100」になります。

このように数字をカウントするのが2進数です。

では、改めて0~9を2進数でどのように表現するのか考えてみます。
先程の方法で2進数をカウントしていくと0~9は下のように表現出来ることが分かります。

2進数で全ての文字を表現する

コンピュータは数字だけでなく、ひらがなやアルファベットも表現しなければいけません。しかし、コンピュータは0と1しか使えません。では、どのように文字を表現するのでしょうか。

実は全ての文字に対して2進数での表現方法が割り当てられています。
表現方法は色々あるのですが、広く使われているUTF-16という表現方法では全ての文字に対して下記のように2進数が割り当てられています。

まずは16進数での数え方を知る

16進数とは、0~9とA~Fの16種類の英数字で数える方法です。

16進数で数を数える方法

16進数では、1桁の数字は、0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fと上がります。アルファベットがいることに違和感を感じる人もいるかもしれませんが、16進数ではAやFも数字として扱います。

では、Fより1つ大きい数字はどう表現されるでしょうか。これも10進数と同じ考え方を使います。Fを「0F」と表現すると、0Fより1つ大きい数字は2桁目を1つ上げて、1桁目を0に戻した「10」になります。

このようにカウントするのが16進数です。

では、10進数で表現した数字と16進数で表現した数字はどう対応するでしょうか。
先程の方法で数字をカウントしていくと10進数と16進数は下表のように対応します。

なぜコンピュータの世界で16進数が出てくるのか

2進数は桁が多い

10進数の「100」は2進数で「1100100」と表現します。つまり、10進数なら3桁で表現できる数字を2進数は7桁使わないと表現できません。

これだとコンピュータを扱うエンジニアが数え辛くて嫌になりそうです。桁数が増えれば増える程、読み間違いや書き間違いが増える可能性も多くなります。なので、出来るだけ小さい桁数で数字を表現できるのが望ましいです。

16進数と2進数は相性が良い

16進数と2進数は実はとても相性が良いです。16進数と2進数の対応表を見てみましょう。

上の対応表を見ると、1桁の16進数の最大値「F」の時に2進数では4桁の最大値「1111」になることが分かります。つまり、4桁の2進数は、1桁の16進数で綺麗に表現できて、2進数と16進数は4桁で強いつながりを持つことが分かります。

例えば、2進数の「11111111」は16進数で「FF」になります。かなり桁数を省略出来ますね。