昨日の記事で、2026年共通テストの「情報Ⅰ」にチャレンジしたことを書きました。
プログラマーでありながら、あまり思わしくない結果となりました。
そこで今回は、自身への戒めも込めて、「ここどうして間違えての?」という部分を解説していきたいと思います。この記事では、第1問・問2の
「Mさんは、図案の種類を増やすために、4×4マスの一つの図案に対する次のような変換方法を考えた。…」
という問題を取り上げます。問題の詳細を知りたい方は、「2026年共通テスト 情報Ⅰ」などで検索して、実際の問題を確認してみてください。
この問題で問われている内容を端的に言うと、
「16進数を2進数に変換する」、そしてその逆の
「2進数を16進数に変換する」
というものです。いわゆる2進数、つまり bit に関する問題です。
実はこの bit という言葉こそ、Crebit プログラミング教室の名前の由来でもあります。……にもかかわらず、僕はこの問題を間違えてしまいました。
正直なところ、かなり恥ずかしいですし、「Crebit プログラミング教室の講師を名乗っていて大丈夫か?」と思ってしまうレベルのミスでした。実際にどんな問題が出て、どこを間違えたのかというと、次の通りです。
「35AD と表された16進数を2進数に変換せよ」
この問題で、僕は D を2進数で表す際に計算ミス(思い込み)をしてしまいました。
D を 1110 と書いてしまったのです。正しくは 1101 です。
その後の計算は、この値を元に進めるため、考え方自体は合っていたとしても、以降の解答はすべて間違いという結果になってしまいました。
ということでここからは、
16進数を2進数に変換する方法
2進数を16進数に変換する方法
を、小学生でも分かるように説明していきたいと思います。
16進数 → 2進数(やさしく解説)
16進数ってなに?
まず、16進数とは 0〜9 と A〜F を使って数を表す方法です。
Webのカラーコード(光の三原色)を表現する際にも使われていて、Web制作やプログラミングではよく登場します。
| 16進数(主にWebの世界で使われる数) | 10進数(普段の生活で用いられる数) |
|---|---|
| 0〜9 | そのまま数字 |
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
つまり、D = 13 ということになります。
2進数ってなに?
2進数は、0 と 1 だけを使って数を表す方法です。
コンピュータ内部の処理などに利用されます。
たとえば、
| 10進数 | 2進数 |
|---|---|
| 1 | 1 |
| 2 | 10 |
| 3 | 11 |
| 4 | 100 |
というように、桁が増えていきます。
16進数を2進数に変える方法
16進数を2進数に変換する方法はいくつかありますが、
ここでは 一度10進数に変換してから、2進数に変える方法を紹介します。
少し回り道のように見えますが、
数の意味を理解しながら変換できるので、初心者にはおすすめの方法です。
これが分かると、一気に楽になります。
(D を例にして考えてみよう)
ステップ①:16進数のDを10進数に変換する
先ほどの表で書きました通り「D」は10進数で表すと、13 でした。
ステップ②:10進数を2進数に変換する
次に、この 10進数の 13 を 2進数に変えてみましょう。
2進数は「2で割って、あまりを並べる」ことで求められます。
13 を 2 で割っていく
| 割り算 | 商 | あまり |
|---|---|---|
| 13 ÷ 2 | 6 | 1 |
| 6 ÷ 2 | 3 | 0 |
| 3 ÷ 2 | 1 | 1 |
| 1 ÷ 2 | 0 | 1 |
あまりを 下から上に読むと、
1101
となります。
つまり、
16進数 D → 10進数 13 → 2進数 1101
という変換になります。
他の数も同様の手順で行うことができます。
まとめると以下のようになります。ぜひ一度自分の手で計算してみましょう。
| 16進数 | 2進数 |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
| A | 1010 |
| B | 1011 |
| C | 1100 |
| D | 1101 |
| E | 1110 |
| F | 1111 |
35AD を2進数に変換してみる
1文字ずつ変換するだけです。
| 16進数 | 2進数 |
|---|---|
| 3 | 0011 |
| 5 | 0101 |
| A | 1010 |
| D | 1101 |
これを左から順につなげます。
0011 0101 1010 1101
これが正しい答えです。
2進数 → 16進数(やさしく解説)
(1101 を例にして考えてみよう)
2進数を16進数に戻す方法は、
「4桁ずつに区切って考える」だけです。
これが分かれば、計算はほぼ不要です。
ステップ①:2進数を4桁ずつに区切る
まず、2進数を 右から4桁ずつに区切ります。
今回の例は、
1101
すでに 4桁なので、そのままでOKです。
(もし桁が足りない場合は、左に 0 を足します)
ステップ②:4桁の2進数を10進数で考える
次に、それぞれの桁がどんな意味を持っているかを確認します。
| 桁 | 値 |
|---|---|
| 1桁目(右) | 1 |
| 2桁目 | 2 |
| 3桁目 | 4 |
| 4桁目(左) | 8 |
1101
は、
8×1 + 4×1 + 0×2 + 1×1 なので、
13
になります。
ステップ③:10進数を16進数に変換する
10進数の 13 は、16進数では D です。
| 10進数 | 16進数 |
|---|---|
| 10 | A |
| 11 | B |
| 12 | C |
| 13 | D |
| 14 | E |
| 15 | F |
結果まとめ
2進数 1101
↓
10進数 13
↓
16進数 D
つまり、
1101(2進数)= D(16進数)
となります。
慣れないうちは「大変だな…」と思う計算ですが、慣れてくると本当に一瞬でできるようになります。
ただ、慣れすぎると今回の僕みたいに思い込みでミスをしがちなので、理屈を整理しつつ丁寧に確認しながら進めるのがベストだと思います。
