2進数・16進数とは?電球のオンオフで理解する数の仕組み

2進数・16進数とは?電球のオンオフで理解する数の仕組み IT・コンピュータ基礎
電球のオンオフで2進数を表現したイラスト

コンピュータは「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進数・2進数・16進数の0から15までの対応表

まず「進数」という言葉の意味から整理しよう。

○進数とは「○種類の数字を使って数を表す方法」のことだ。

名前使う数字種類数
10進数0, 1, 2, 3, 4, 5, 6, 7, 8, 910種類13, 255, 1024
2進数0, 12種類1101, 11111111
16進数0〜9, A, B, C, D, E, F16種類D, FF, 400

16進数に「A〜F」という文字が登場するのは、「10, 11, 12, 13, 14, 15」を1文字で表す必要があるからだ。2桁になると困るので、アルファベットを借りてきた。

0から15までを3つの表現で並べると、こうなる。

10進数2進数16進数
000000
100011
200102
810008
910019
101010A
111011B
151111F
161000010

「同じ数なのに書き方が違う」——これがすべての出発点だ。


位取りの仕組み:電球の並び順が「重み」を決める

📌 要点:10進数の「123」が「100の位が1・10の位が2・1の位が3」であるように、2進数にも位がある。2進数の各位の重みは右から1・2・4・8・16…と2倍ずつ増えていく。この重みと0/1の積の合計が10進数の値になる。

2進数1011の位取りと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+3042Unicodeで「あ」を表す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段階なら確実に判定できます。シンプルな仕組みの方が、速く・安定して・小さく作れるという工学的な理由があります。

Q
Q. 2進数の「ビット」と「バイト」の違いを教えてください。
A

1ビットは「0か1か」の最小単位で、電球1個分です。8ビットをまとめて1バイトと呼びます。
通信速度は「bps(ビット/秒)」、ファイルサイズは「B(バイト)」で表すことが多く、1バイト=8ビットなので変換が必要になります。

Q
16進数で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とアルファベットを割り当てました。

Q
2進数と16進数はどうやって相互変換しますか?
A

2進数4桁がちょうど16進数1桁に対応します。
2進数を4桁ずつ区切って、それぞれを16進数1文字に置き換えるだけです。例:101111001011=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にならないのか?
“`

タイトルとURLをコピーしました