8個のスイッチをON/OFFすると、10進数の値がリアルタイムで切り替わります。コンピュータが0と1だけで数を表す仕組みを体感してみましょう。
2進数とは、「0」と「1」の2種類の数字だけで数を表す方法のことです。私たちが普段使っている10進数が0〜9の10種類を使うのに対して、2進数は2種類しか使いません。
たとえば10進数の5は、2進数では101と書きます。「同じ数を別の書き方で表現している」だけで、量そのものは変わりません。
上のツールで8個のスイッチをクリックしてみてください。0と1の組み合わせが変わるたびに、対応する10進数の値も変わります。これが2進数の世界です。
コンピュータは内部で電気のON/OFFだけを扱っています。電圧が高ければ「1」、低ければ「0」と決めることで、たった2つの状態で数を表現できます。
もし10進数(0〜9)を直接扱おうとすると、10段階の電圧を正確に区別する必要があります。これは技術的にとても難しく、ノイズで「3」が「4」に化けるような誤動作が起きやすくなります。
・2状態(ON/OFF)なら、雑音が多少混じってもどちらか判別しやすい
・回路がシンプルになり、小型化・高速化しやすい
・論理演算(AND/OR/NOT)と相性が良いので、計算装置が作りやすい
身近な例で考えると、部屋の電気スイッチはON/OFFの2状態しかありません。スイッチが8個並んでいれば、ONとOFFの組み合わせだけで256通りの「状態」を表せます。コンピュータはこの仕組みで数も文字も画像もすべて記録しているのです。
2進数の1桁を「ビット」(bit=binary digit の略)と呼びます。ビット数が増えるほど表せる値の種類が倍々に増えていきます。
・1ビット:2通り(0, 1)
・2ビット:4通り(00, 01, 10, 11)
・4ビット:16通り(0〜15)
・8ビット:256通り(0〜255)
・n ビット:2ⁿ 通り
この8ビットのことを「1バイト」と呼びます。バイトはコンピュータの世界で最もよく使われる基本単位で、ファイルサイズ・メモリ容量・通信量などはすべてバイトをもとに計算されます。
各ビットには「重み」があります。右から順に1, 2, 4, 8, 16, 32, 64, 128と倍々で増えていき、ONになっているビットの重みを全部足したものが10進数の値です。たとえば 10110101 は 128 + 32 + 16 + 4 + 1 = 181 となります。上のツールで「181」のプリセットを選び、各ビットの重みがどう足し合わさっているか確認してみてください。
2進数を10進数に変換するルールはシンプルです。「1」が立っているビットの重みだけを足す。それだけです。「0」のビットは0倍なので無視できます。
なぜこれで計算できるのか。それは各桁の重みが「2の何乗か(べき乗)」で決まっているからです。右端が 2⁰=1、次が 2¹=2、その次が 2²=4…と左へ行くほど2倍ずつ増えます。これは10進数の「千の位・百の位」が10倍ずつ増えるのと全く同じ仕組みです。
・右から1桁目: 2⁰ = 1
・右から2桁目: 2¹ = 2
・右から3桁目: 2² = 4
・右から8桁目: 2⁷ = 128
上のビット操作ツールで好きなビットをON/OFFしてみてください。計算式のパネルがリアルタイムで変わり、どの重みが足されているか目で確認できます。プリセット「181」(=10110101)を選ぶと上の図の例と同じ状態になります。
1バイト(byte)=8ビット。これがコンピュータで情報を扱うときの最も基本的な単位です。8ビットで 2⁸=256通り(0〜255)の値を表せます。
なぜ8ビットが基本なのか。それは英数字・記号を1バイト(256通り)で十分表現できるからです。アルファベット大文字・小文字・数字・各種記号をまとめても256種類に収まります(この対応表を定義した規格をASCII(アスキー)と呼びます)。
・1バイト(8ビット):256通り、英字1文字を格納
・2バイト(16ビット):65536通り、日本語の文字なども収録
・4バイト(32ビット):約43億通り
・8バイト(64ビット):現代のCPUの標準サイズ
ファイルの大きさや通信速度でよく見かける「KB(キロバイト)」「MB(メガバイト)」「GB(ギガバイト)」もすべてバイトをもとにした単位です。1KB=1024バイト、1MB=1024KB、1GB=1024MBという関係です。1024は 2¹⁰(2の10乗)なので、2進数の世界と相性の良い区切りになっています。