コンピューターはなぜ0と1を使う?二進数と情報の仕組み
私たちが普段使っているパソコンやスマートフォン。
動画を見たり、ゲームで遊んだり、友達とメッセージをやり取りしたりと、毎日さまざまな場面で大活躍していますよね。
では、そんなコンピューターの頭の中をのぞいてみると、いったい何が起きているのでしょうか。
実は驚くことに、コンピューターが本当に理解できる言葉は「0」と「1」のたった2種類しかありません。
画面に映るきれいな写真も、迫力のあるゲーム画面も、スピーカーから流れる音楽も、すべて「0」と「1」の組み合わせだけで作られているのです。
「たった2つの数字だけで、どうしていろいろなことができるの?」
「そもそも、なぜ2つしか使わないの?」
そんな疑問を持ったことがある方も多いはずです。その答えの鍵を握っているのが、コンピューターの世界の基本ルールである「二進数(にしんすう)」と、電子回路の仕組みです。
この記事では、小中学生のみなさんにも分かりやすいように、コンピューターが0と1を使う理由から、二進数の数え方、そして文字や画像がデータに変わる仕組みまでを一つひとつていねいに解説します。
最後には、おうちにある紙のカードを使って楽しく試せる二進数の実験も紹介しますので、ぜひ最後まで読んでみてください。
コンピューターが0と1を使う理由

電子回路の2つの状態と0・1の対応
コンピューターの中には、電気信号を使って情報を処理する電子回路が入っています。
代表的なデジタル回路では、電圧が「低い状態」と「高い状態」の2つをしっかり区別して動いています。

この2つの状態を、数字の「0」と「1」に対応させているのです。
たとえば、電圧が低い状態を「0」、高い状態を「1」と決めれば、回路の様子を数字として表すことができます。
ここでいう「0」と「1」は、あくまで状態につけた目印や名前にすぎません。
コンピューターの部品の中に、私たちがノートに書くような数字が直接書かれて並んでいるわけではないのです。
また、実際の回路では「どこまでの電圧を低い状態とするか」「どこからを高い状態とするか」という範囲がきちんと決められています。
「0は電気がまったく流れていない状態」というわけではない点も知っておくとよいでしょう。
まずは、「見分けやすい2つの状態に、0と1という名前をつけて使っている」と覚えておきましょう。
信号の小さな変化に対応しやすい仕組み
電気信号には、まわりの影響などによって小さなブレ(ノイズ)が生じることがあります。
もし、電圧の強さを細かく10段階に分けて、それぞれを「0〜9」の数字に対応させたとしましょう。その場合、となり合う段階を正しく見分けるのがとても難しくなります。信号がほんの少しブレただけで、別の数字だと間違えて判断してしまうかもしれません。
一方、状態を「低い」と「高い」の2つだけに絞り、それぞれの基準を十分に離しておけば、少しくらいのブレがあってもどちらの状態なのかを簡単に見分けられます。
この仕組みのおかげで、コンピューターは間違いを起こさずに安定して情報を処理できるのです。
0と1という少ない種類しか使わない代わりに、その組み合わせを増やすことで、膨大な情報を扱えるように工夫されています。
二進数の基本と十進数との違い

2つで桁が上がる数の表し方
私たちが普段使っているのは、0から9までの10種類の数字を使う数え方です。
9の次は、新しい桁を使って「10」と書きます。この表し方を「十進数(じっしんすう)」と呼びます。
一方、0と1の2種類の数字だけを使う表し方を「二進数(にしんすう)」といいます。
二進数では、1の次に数を増やすと、その桁にはもう書ききれないため、一つ左の桁へ繰り上がって「10」と書きます。
まずは、普段の数え方と二進数を比べてみましょう。
| 十進数 | 二進数 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 10 |
| 3 | 11 |
| 4 | 100 |
| 5 | 101 |
| 6 | 110 |
| 7 | 111 |
| 8 | 1000 |
二進数の「10」は、十進数の「2」と同じ大きさです。見た目は同じ「10」でも、どちらの数え方を使っているかによって意味がまったく変わります。
二進数の1に1を足すと、その桁には収まらなくなるため左の桁へ繰り上がります。これが、二進数で2を「10」と書く理由です。
右から1・2・4・8と増える桁の大きさ
十進数では、右から「一の位」「十の位」「百の位」と、桁が一つ左へ進むたびに10倍になります。
それに対して二進数では、右から1、2、4、8、16……と、桁が一つ左へ進むたびに2倍になっていきます。
たとえば、二進数の「1101」を考えてみましょう。
| 桁が表す大きさ | 8の位 | 4の位 | 2の位 | 1の位 |
|---|---|---|---|---|
| 1101の各桁 | 1 | 1 | 0 | 1 |
「1」がある桁の数字を足すと、8+4+1=13になります。つまり、二進数の「1101」は十進数の「13」のことです。
反対に、十進数の13を二進数で表したいときは、「8・4・2・1のどれを足すと13になるかな?」と考えます。
「8と4と1」を使えば13になるので、使う桁に「1」を、使わない桁に「0」を入れると「1101」になります。

計算のやり方を丸暗記する前に、桁の下に「1・2・4・8」とメモを書いて確かめてみてください。
ビットとバイトの関係

0か1を表す1ビット
情報の世界で、0か1のどちらかが入るひとマス分の単位を「ビット」と呼びます。
⚬ 1ビットで表せるのは、0と1の2通りです。
⚬ 2ビットなら、00、01、10、11の4通りになります。
ビットが1つ増えるたびに、その新しいマスで0と1の2通りを選べるようになるため、組み合わせの数は2倍に増えていきます。
| ビット数 | 組み合わせの数 |
|---|---|
| 1ビット | 2通り |
| 2ビット | 4通り |
| 3ビット | 8通り |
| 8ビット | 256通り |
「0と1しか使えない」と聞くと少なく感じるかもしれませんが、並べる数を増やしていけば、数え切れないほどたくさんの情報を区別できるようになります。
8ビットをまとめた1バイト
このビットを8つまとめた単位を「バイト」と呼びます。1バイト=8ビットという関係です。
8ビットには256通りの組み合わせがあるので、0以上の整数を表すルールであれば、0から255までの数字を区別できます。
「0」もひとつの数として数えるため、一番大きな数は255でも、全部で256通りになるのです。
バイトは、スマートフォンの保存容量やファイルの大きさを知るときによく使われます。
文字、画像、音などを記録するために、どれくらいのデータが必要かを表す単位です。

文字・画像・音を数字で表す仕組み

文字と番号の対応
コンピューターで文字を記録するときは、あらかじめ文字ごとに番号を決めておき、その番号を決められたルールで0と1の並びに変換します。
たとえば、英数字などを表す「ASCII(アスキー)」というルールでは、アルファベットの大文字「A」に十進数の「65」が割り振られています。
65を8ビットの二進数で表すと、次の並びになります。
01000001
文字を表示するアプリが同じルールを使っていれば、この並びを受け取ったときに画面へ正しく「A」と表示できます。
日本語など、世界中のさまざまな文字をまとめて扱う共通ルールとして「Unicode(ユニコード)」があり、その番号をバイトの並びで表す方法の一つに「UTF-8」があります。
UTF-8では、「A」は1バイトですが、ひらがなの「あ」は3バイト(24ビット)使います。「あ」を0と1で表すと、次の24桁になります(読みやすいように8ビットごとにスペースを入れています)。
11100011 10000001 10000010

ここで知っておきたいのは、「文字数」と「バイト数」は別のものであるということです。
文字の種類や記録するルールによって、必要なバイト数は変わってきます。
画像の点と色の数値
写真などの画像をコンピューターで扱うときは、画面を敷き詰める小さな点ごとに色を数字で表します。
このひとつひとつの点を「画素」や「ピクセル」と呼びます。
まずは、白と黒だけで描く縦8マス×横8マスのドット絵を考えてみましょう。「白を0」「黒を1」と決めれば、各マスを1ビットで表せます。
次の並びを、「上から順に、1行ずつ左から右へ読む」というルールで並べてみます。
0を白いマス、1を黒いマスに置き換えると、ハートのような形が浮かび上がってきます。

この例では、8×8=64個のマスをそれぞれ1ビットで表しています。色の情報だけなら64ビット(つまり8バイト)で記録できる計算です。(※実際の画像ファイルには縦横のサイズなどの情報や圧縮データも含まれるため、ファイル全体がそのまま8バイトになるわけではありません)。
カラー画像では、色をもっと細かく指定します。赤・緑・青の光の強さを組み合わせて色を作る方法を「RGB(アールジービー)」と呼びます。それぞれの色を8ビットずつ(0〜255の強さ)で表す場合、1つの点の色を表すのに合計24ビット(3バイト)を使います。

たとえば、赤を255、緑と青を0にすると鮮やかな赤色になり、3つとも255にすると白色になります。
この方法で作れる色の組み合わせは、256×256×256=16,777,216通り(約1,677万色)にもなります。
数字を少し変えるだけで、画面に映る色が変わります。0と1の並びが、画面の豊かな映像を作り出していることがよく分かりますね。
音の波の記録
音の正体は、空気がふるえる「波(振動)」です。マイクは、その振動を電気信号に変えています。
デジタル音声では、その波の信号をごく短い時間ごとに細かく測定し、その瞬間の数値を記録していきます。このように値を取り出すことを「サンプリング」といいます。
測定した波の大きさを決められた段階の数字に置き換え、その数字を0と1の並びに変換することで、音をデータとして保存できます。
1秒間に何回測定するかを表すのが「サンプリング周波数」です。たとえば音楽CDでは、1秒間に44,100回も波の高さを記録しています。

音を再生するときは、記録したデータをもとに電気信号を作り出し、スピーカーを振動させます。その振動が空気を伝わって、私たちの耳に音として届くのです。
文字、画像、音と、表現するためのルールはそれぞれ違いますが、どれも最終的には0と1の組み合わせに置き換えて処理されているという点は共通しています。
同じ0と1の並びを読み分けるルール

先ほど登場した「01000001」という並びを、もう一度見てみましょう。
- 整数を表す二進数として読めば、十進数の「65」になります。
- ASCIIという文字のルールで読めば、アルファベットの「A」になります。
同じ0と1の並びであっても、それが何を意味しているかは「どんなルールで読み取るか」によって決まります。
画像も同じです。ただ0と1が並んでいるだけでは、何マスで折り返すのか、0が白なのか黒なのか分かりません。先ほどのドット絵も、「横8マス」「左から右へ読む」「0は白で1は黒」というルールを決めていたからこそ、同じ絵を再現できました。
「0と1の並び」と「それを読み解くルール」がそろって初めて、情報は正しい意味を持ちます。
これは、道案内をするときに似ています。単に「右へ曲がって」と言うだけでは、どこから見た右なのかが分かりません。出発点や向いている方向を共有して初めて、相手が同じ道を進むことができます。
コンピューターで情報を扱うときも、文字の形式、画像の大きさ、音の記録間隔など、共通のルールをそろえることでデータを正しく解釈しています。
プログラミングと0・1の関係

人が書く命令とコンピューターの処理
Scratch(スクラッチ)のブロックを組み立てたり、Python(パイソン)でコードを書いたりしたプログラムは、どのようにして0と1の世界で動いているのでしょうか。
プログラムをファイルとして保存する段階では、先ほど説明した文字のルールを使って0と1のデータとして保存されます。
そして実行するときには、そのプログラムを読み解く専用のソフトが、書かれた指示に沿って処理を進めていきます。
たとえばPythonで次のように書いたとします。
print(1 + 1)
このときPythonの環境は、足し算をしてその結果を画面に表示する処理を行います。
その内部では、コンピューターの計算装置や記憶装置が連携して働いています。
コンピューターの頭脳であるCPU(中央処理装置)が直接理解して実行できる命令を「機械語」と呼び、これもすべて0と1のビットの並びでできています。
人が書いたプログラムが実際の処理に変わる道筋は、プログラミング言語や環境によって異なります。
あらかじめ機械語へ変換しておく方式もあれば、命令を1行ずつ読み取りながら進める方式もあります。
0と1の組み合わせを使った判断
0と1は、数を数えるだけでなく「条件に合っているかどうか」を判断するときにも使われます。
「条件に合っている場合を1」「合っていない場合を0」と決める考え方です。
たとえば、「キャラクターが地面についている」かつ「ジャンプボタンが押された」という2つの条件がそろったときにジャンプするゲームを作るとします。
この場合、2つの条件がどちらも「1」になったときにジャンプを実行します。

このように「両方の条件を満たしているか」を調べる考え方を「AND(論理積)」と呼びます。
電子回路の中にも、2つの入力が両方とも1のときにだけ1を送り出す「AND回路」が使われています。
0と1を組み合わせることで、データの記録だけでなく、プログラムの状況判断や処理の分かれ道も作り出せます。
二進数の理解と作品づくりの関係
Scratchでゲームを作るときに、すべての命令を0と1で書く必要はありません。
人間にとって分かりやすいブロックや言葉で指示を作り、裏側でコンピューターに動かしてもらうことができます。
それでも二進数やデータの仕組みを知っておくと、ゲームの点数やキャラクターのイラストも、コンピューターの中では情報として管理されていることが実感できます。画面に見える動きと、その裏で扱われるデータを結びつけて考えられるようになるのです。
プログラミングを学ぶときは、「この数字を変えたら、画面の動きはどう変わるかな?」と予想してから確かめてみましょう。スコアを増やす、色を変える、効果音を鳴らすといった操作の裏側でも、情報を記録し、読み取り、書き換える処理が行われています。
- 命令を書くための言葉については、プログラミング言語とは?小中学生にもわかる仕組みと種類を解説をご覧ください。
- 点数などの数値を名前をつけて管理する仕組みは、プログラミングの「変数」とは?小学生でもわかるようにやさしく解説で詳しく説明しています。
家庭でできる二進数の実験

紙のカードを使った数の表現
二進数の仕組みは、パソコンを使わなくても紙とペンだけで楽しく体験できます。
紙を5枚用意して、それぞれに「16」「8」「4」「2」「1」と大きく書きましょう。裏面は何も書かずに白紙にしておきます。
カードを左から「16・8・4・2・1」の順に並べ、「表向き=1」「裏向き=0」と決めます。
たとえば、十進数の「19」を作りたいときは、16、2、1のカードを表にして、8と4のカードを裏返します。
| カードの数 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|
| 表を1、裏を0にした並び | 1 | 0 | 0 | 1 | 1 |
16+2+1=19なので、19を二進数で表すと「10011」だと分かります。

次は、7と12をカードを動かして作ってみてください。どのカードを表にすればよいでしょうか。
- 7を作るには:4+2+1なので「00111」になります。
- 12を作るには:8+4なので「01100」になります。(※左側の0は、カード5枚分の位置をそろえるためにつけています)
5枚のカードをすべて表にすると、16+8+4+2+1=31になります。すべて裏なら0なので、この5枚で0から31までの合計32通りの数を表せます。
もし「32」を表したくなったら、左側に「32」のカードを1枚追加します。
桁が1つ増えるだけで、扱える数の範囲が一気に広がる感覚をカードで確かめてみてください。
白黒の絵を使った情報のやりとり
もうひとつの実験は、方眼紙を使った絵のやりとりゲームです。
8×8マスの枠に白黒で簡単な絵を描き、各マスを「白=0」「黒=1」に置き換えて、数字の並びを別の紙に書き出します。
家族や友達には、その「数字の並び」と「読み方のルール(横8マス、左から右へ読む、0は白で1は黒)」だけを渡します。
受け取った人が元の絵を見ずに同じ絵を再現できれば、情報を数字の並びにして正しく伝えられたことになります。
そのあと、数字の0か1を一箇所だけ書き換えてみてください。再現した絵では、どのマスが変わるでしょうか。
絵と数字を行き来してみることで、ひとつのビットが情報のどこに対応しているかを実感できます。
完成した絵を見比べながら、数字の並びを間違えずに伝える大切さも考えてみてください。
二進数とコンピューターに関するよくある疑問

0と1だけで大きな数も表せますか?
桁数(ビット数)を増やせば、いくらでも大きな数を表せます。
二進数では、桁が1つ増えるごとに表せる組み合わせが2倍に増えていきます。ただし、あらかじめ使えるビット数が決められているシステムでは、表せる数の範囲にも上限があります。
また、マイナスの数や小数を表す場合には、今回説明した0以上の整数とは別の表し方のルールが使われます。
コンピューターが画面に十進数を表示できるのはなぜですか?
コンピューターの内部で計算した数値を、人間が読みやすい文字データに変えて画面に表示しているためです。
内部での記録方法と、画面に見せる表示の形式は分けて考えられています。
たとえば、計算結果が「13」であれば、その数値を「1」と「3」という文字の形に変えて画面に映し出しています。
プログラミングを始める前に二進数を覚える必要はありますか?
二進数をすべて暗記してから始める必要はまったくありません。
Scratchなどで作品を作りながら、数字や画像がコンピューターの裏側でどう扱われているかを少しずつ学んでいけば大丈夫です。
まずはカードで数を作ったり、白黒の絵を数字に直したりと、目で見て確かめられる体験から楽しんでみてください。
0と1への興味から始めるプログラミング体験

コンピューターは、見分けやすい「2つの状態」を0と1に対応させ、その並びの組み合わせでたくさんの情報を扱っています。
二進数のルールを使えば数字を表すことができ、文字のルールを使えば文章を、画素や音の記録方法を使えば写真や音楽さえも表現できます。
シンプルな0と1の並びも、読み解くルールと合わさることで、豊かなデジタル世界を作り出しているのです。
まずは、身近な数字を紙のカードで作ってみてください。慣れてきたら、自分で描いたイラストを0と1に置き換えて、誰かに再現してもらいましょう。
そこから「ゲームのキャラクターはどうやって動いているのかな?」「自分でもオリジナルの作品を作ってみたい!」と興味が広がったら、実際にプログラミングを体験してみるのがおすすめです。
命令や数値を変えながら画面の動きを確かめることで、この記事で学んだ仕組みが作品づくりと自然につながっていきます。
テックチャンスの無料プログラミング体験会

小学生・中学生・高校生向けプログラミング教室「テックチャンス」では、無料のプログラミング体験会を開催しています。
「自分でもゲームを作ってみたい!」というお子さまはもちろん、「子どもがプログラミングを楽しめるか試してみたい」という保護者の方も、体験会で実際の学びの雰囲気に触れてみませんか。
お子さまがどんなことに興味を持ち、教室での学び方が合いそうかを、ぜひ参加して確かめてみてください。
お申し込みフォームでは、希望する教室や体験コースを気軽にお選びいただけます。
「0と1だけで、どうしていろいろなことができるの?」という素朴な疑問をきっかけに、楽しいプログラミングの第一歩を踏み出してみましょう。