C言語入門|コンピュータは0と1でデータを表す

文字コードの前に知っておきたいこと

文字コードの話に入る前に、
まずは コンピュータが世界をどう見ているのか を理解しておきましょう。

私たち人間は、文字や数字、音や画像を直感的に扱っていますが、
コンピュータの世界はずっとシンプルです。

実はコンピュータが直接扱える値は、
0 と 1 の2種類だけなのです。

「え、そんな単純なもので、文字も画像も音も表せるの?」
そう思いますよね。でも、それがコンピュータのすごいところなんです。

なぜ0と1だけなのか

その理由は、コンピュータの最も基本的な部品である
集積回路(IC:Integrated Circuit) にあります。

ICは電気で動いていて、扱える状態は次の2つだけです。

電気の状態意味
ON電気が流れている。
OFF電気が流れていない。

この2つの状態を、
ONを1、OFFを0 と対応づけて扱っています。

つまり、

電気信号数値
OFF0
ON1

というわけで、
コンピュータの世界は0と1でできているのです。

ビットという最小単位

0または1のどちらかを表せるこの状態を、
1ビット(bit) と呼びます。

ビットは、コンピュータが扱えるデータの
最小単位です。

1ビットで表せる情報は、とても単純です。

状態
表 / 裏どちらか
真 / 偽どちらか
ON / OFFどちらか

でも、このビットを組み合わせることで、
一気に表現力が広がります。

ビットが増えると何が起こるか

ビットを2つ使うと、次の4種類を表せます。

2ビット表せる状態
000
011
102
113

同じ考え方で、

ビット数表せる種類
1ビット2通り
2ビット4通り
3ビット8通り
4ビット16通り

というように、
ビットが1つ増えるたびに、表現できる数は倍になります。

一般化すると、

  • nビット → 2のn乗 通りの状態

を表せる、というわけです。

バイトという単位

C言語でよく登場する char型 は、
文字を格納する型でしたね。

この char型の大きさは 1バイト です。

単位大きさ
1バイト8ビット

8ビットあれば、

  • 2の8乗 = 256通り

の状態を表せます。

つまり、1バイトで 256種類の値 を扱えるということです。

なぜ256種類で足りたのか

コンピュータは、もともと欧米で発展してきました。
欧米で使われる言語は主にアルファベットです。

種類
アルファベット26文字
大文字+小文字52文字
数字や記号追加しても数十種類

これらを全部まとめても、
256種類あれば十分に収まります。

そのため、

  • 文字は1バイト(8ビット)で表す。
  • char型は1バイト

という設計が、長い間使われてきたのです。

「昔の家庭用ゲーム機が8ビットだった」
という話を聞いたことがある人もいるかもしれませんね。

10進数と2進数の違い

私たちが普段使っている数は 10進数 です。
10になったら桁が繰り上がります。

一方、コンピュータが使うのは 2進数 です。
2になったら桁が繰り上がります。

例を見てみましょう。

表記意味
10進数の101100×1 + 1×1 = 101
2進数の1014×1 + 1×1 = 5

同じ「101」でも、
10進数と2進数ではまったく違う値になるのがポイントです。

0と1からすべてが始まる

ここまでをまとめると、

  • コンピュータは電気のON/OFFで動く。
  • ON/OFFを0と1に対応づけている。
  • ビットを組み合わせることで数や文字を表現する。
  • 文字コードも、数値として保存されている。

という流れになります。

次は、この 0と1の並びに意味を持たせた仕組み
つまり 文字コード について学んでいきましょう。