
コンピュータは「0と1しかわからない」と聞いたことがあるだろうか。
なぜ0と1だけなのか。答えは単純で、コンピュータの中は電気のオンとオフしかないからだ。電球が点いているか消えているか、それだけ。点いていれば1、消えていれば0。この2つだけで、すべての数・文字・画像・動画を表している。
「そんな2つだけで複雑な計算ができるの?」——できる。電球を何個も並べれば、組み合わせはどんどん増える。4個の電球があれば0000〜1111の16通り、8個なら256通りの数を表せる。この仕組みが2進数だ。
この記事でわかること
- コンピュータが2進数を使う理由
- 2進数・10進数・16進数の関係と相互変換のやり方
- 位取りの仕組みを使った変換の考え方
- 高校情報Ⅰ・ITパスポートでよく出る問題パターン
3つの数の世界:10進数・2進数・16進数
📌 要点:私たちが日常で使う10進数は0〜9の10種類の数字を使う。2進数は0と1だけ、16進数は0〜9とA〜Fの16種類を使う。どれも「同じ数を別の書き方で表しているだけ」で、本質は変わらない。

まず「進数」という言葉の意味から整理しよう。
○進数とは「○種類の数字を使って数を表す方法」のことだ。
| 名前 | 使う数字 | 種類数 | 例 |
|---|---|---|---|
| 10進数 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 | 10種類 | 13, 255, 1024 |
| 2進数 | 0, 1 | 2種類 | 1101, 11111111 |
| 16進数 | 0〜9, A, B, C, D, E, F | 16種類 | D, FF, 400 |
16進数に「A〜F」という文字が登場するのは、「10, 11, 12, 13, 14, 15」を1文字で表す必要があるからだ。2桁になると困るので、アルファベットを借りてきた。
0から15までを3つの表現で並べると、こうなる。
| 10進数 | 2進数 | 16進数 |
|---|---|---|
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 2 | 0010 | 2 |
| 8 | 1000 | 8 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 15 | 1111 | F |
| 16 | 10000 | 10 |
「同じ数なのに書き方が違う」——これがすべての出発点だ。
位取りの仕組み:電球の並び順が「重み」を決める
📌 要点:10進数の「123」が「100の位が1・10の位が2・1の位が3」であるように、2進数にも位がある。2進数の各位の重みは右から1・2・4・8・16…と2倍ずつ増えていく。この重みと0/1の積の合計が10進数の値になる。

私たちは普段「123」を見たとき、無意識に「100が1個、10が2個、1が3個」と読んでいる。これが位取りだ。
2進数も同じ仕組みだ。ただし各位の重みが「1・2・4・8・16・32…」と2倍ずつになる。
2進数 1011 を10進数に変換してみよう:
位の重み: 8 4 2 1
2進数の値: 1 0 1 1
↓ ↓ ↓ ↓
8×1 4×0 2×1 1×1
= 8 + 0 + 2 + 1
= 11
2進数の 1011 は10進数の 11 と同じだ。
練習:2進数 1101 を10進数に変換する
位の重み: 8 4 2 1
2進数の値: 1 1 0 1
8×1 4×1 2×0 1×1
= 8 + 4 + 0 + 1
= 13
答えは13だ。慣れてくると「8の位が立っている、4の位が立っている、1の位が立っている → 8+4+1=13」と一気に読めるようになる。
10進数を2進数に変換する:2で割り続ける
逆方向、10進数から2進数への変換は「2で割り続けて余りを並べる」方法が確実だ。
13を2進数に変換する:
13 ÷ 2 = 6 余り 1 ← 最後に読む(最上位ビット側)
6 ÷ 2 = 3 余り 0
3 ÷ 2 = 1 余り 1
1 ÷ 2 = 0 余り 1 ← 最初に読む(最下位ビット側)
余りを下から読むと: 1101
13の2進数表現は 1101 だ。先ほどの変換結果と一致する。
16進数を使う理由:2進数の「まとめ書き」
📌 要点:2進数は桁数が多くなりすぎて人間には読みにくい。16進数は2進数4桁をちょうど1文字に圧縮できるため、プログラマーはメモリアドレスや色コードの表現に16進数を使う。
8個の電球(8ビット)で255まで表せる2進数は、11111111 という8桁になる。これを人間が読むのは大変だ。間違いも起きやすい。
そこで登場するのが16進数だ。2進数4桁 = 16進数1文字という対応があるため、8ビットを16進数2文字で表せる。
2進数 8桁: 1111 1111
↓ ↓
16進数 2文字: F F → FF
11111111(2進数)= FF(16進数)= 255(10進数)。3つはすべて同じ数だ。
実際に使われている場面:
| 場面 | 例 | 説明 |
|---|---|---|
| 色コード(RGB) | #FF0000 | 赤=FF、緑=00、青=00 → 純粋な赤 |
| IPアドレス(IPv6) | 2001:0db8:... | 16進数でアドレスを表記 |
| メモリアドレス | 0x1A2B | プログラムのメモリ位置を16進数で表示 |
| 文字コード | U+3042 | Unicodeで「あ」を表す16進数 |
HTMLで色を指定するときの #FF8800 は「赤がFF(255)、緑が88(136)、青が00(0)」という意味だ。Webデザインをする人なら毎日使っている16進数だ。
ビットとバイト:電球何個分?
📌 要点:1ビットは「0か1か」の最小単位。8ビットをまとめて1バイトと呼ぶ。1バイトで0〜255(256通り)を表せる。ファイルサイズや通信速度の「B(バイト)」「b(ビット)」の違いも覚えておく。
「ビット」「バイト」という言葉は日常でよく出てくる。整理しておこう。
| 単位 | 意味 | 表せる範囲 |
|---|---|---|
| 1ビット(bit) | 電球1個分(0か1) | 0〜1(2通り) |
| 4ビット(ニブル) | 電球4個分 | 0〜15(16通り) |
| 8ビット = 1バイト(byte) | 電球8個分 | 0〜255(256通り) |
| 1キロバイト(KB) | 約1,000バイト | — |
| 1メガバイト(MB) | 約100万バイト | — |
「Wi-Fiの速度が100Mbps」という場合の「b」は小文字でビット(bit)。「ファイルサイズ500MB」の「B」は大文字でバイト(byte)。1バイト=8ビットなので、100Mbpsの速さでダウンロードすると、毎秒100÷8=12.5MB分のデータが転送されることになる。
試験問題によく出る問題パターン
📌 要点:試験では「2進数→10進数の変換」「10進数→2進数の変換」「2進数の加算」「ビット数と表現できる範囲」の4パターンが頻出。計算の流れを手順として覚えると確実に得点できる。
頻出パターン①:2進数→10進数
問:2進数の 10110 を10進数に直せ
解:16+0+4+2+0 = 22
頻出パターン②:10進数→2進数
問:10進数の 25 を2進数に直せ
解:25÷2=12余1、12÷2=6余0、6÷2=3余0、3÷2=1余1、1÷2=0余1
余りを下から読む → 11001
頻出パターン③:2進数の加算
問:2進数の 1011 + 0110 を計算せよ
解:普通の筆算と同じ。ただし1+1=10(繰り上がり)に注意
1011
+ 0110
------
10001 (10進数で言うと 11+6=17)
頻出パターン④:nビットで表せる最大値
問:8ビットで表せる最大の10進数は?
解:2⁸ - 1 = 256 - 1 = 255
(8個の電球が全部オン → 11111111 = 255)
FAQ
- Qなぜコンピュータは10進数を使わないのですか?
- A
電気回路で「0〜9の10段階」を安定して区別するのが難しいからです。
「電気が流れている(1)」か「流れていない(0)」の2段階なら確実に判定できます。シンプルな仕組みの方が、速く・安定して・小さく作れるという工学的な理由があります。
- QQ. 2進数の「ビット」と「バイト」の違いを教えてください。
- A
1ビットは「0か1か」の最小単位で、電球1個分です。8ビットをまとめて1バイトと呼びます。
通信速度は「bps(ビット/秒)」、ファイルサイズは「B(バイト)」で表すことが多く、1バイト=8ビットなので変換が必要になります。
- Q16進数でA〜Fのアルファベットを使うのはなぜですか?
- A
10進数の10〜15を「1文字」で表す必要があるからです。
「10」と書くと「1と0の2文字」になり、16進数の1桁なのか10進数の「10」なのか区別できなくなります。そこでA=10、B=11、C=12、D=13、E=14、F=15とアルファベットを割り当てました。
- Q2進数と16進数はどうやって相互変換しますか?
- A
2進数4桁がちょうど16進数1桁に対応します。
2進数を4桁ずつ区切って、それぞれを16進数1文字に置き換えるだけです。例:10111100→1011=B、1100=C →BC。逆も同様です。
- Q負の数はどうやって2進数で表しますか?
- A
「補数(ほすう)」という方法を使います。
最上位ビットを符号ビットとして使い、0なら正、1なら負を表します。8ビットの場合、00000001は+1、11111111は-1になります。この仕組みは「2の補数」と呼ばれ、ITパスポートの発展問題で登場します。
- Qカラーコードの#FFFFFFはなぜ白なのですか?
- A
RGBカラーモデルでは赤・緑・青それぞれ0〜255の強さで色を表します。
#FFFFFFは赤=FF(255)、緑=FF(255)、青=FF(255)で全色最大強度。
光の三原色が全部最大になると白になります。逆に#000000は全部0で黒です。
まとめ
- コンピュータが2進数を使う理由は電気のオン/オフしかないハードウェアの性質から
- 2進数の各位の重みは右から1・2・4・8・16…と2倍ずつ増える
- 10進数→2進数は2で割り続けて余りを下から読む
- 16進数は2進数4桁を1文字に圧縮した表記。色コード・メモリアドレスで日常的に使われている
- 1ビット=0か1、8ビット=1バイト=0〜255の256通りを表せる
「コンピュータは0と1しかわからない」という事実は、制約ではなく設計の強さだ。シンプルな2値だからこそ、高速で確実に動ける。電球のオンオフから始まったこの仕組みが、スマートフォンの中で毎秒何十億回も繰り返されている。
関連記事
2進数の次は、0と1を組み合わせて計算する論理回路の世界へ。
→ 論理回路とは?スイッチのつなぎ方で理解するANDとOR
コンピュータが小数を扱うときの落とし穴はこちら。
→ なぜ0.1+0.2は0.3にならないのか?
“`

