2進数と16進数の変換をマスターしよう
コンピュータは、すべての情報を 0 と 1 で扱います。この 0 と 1 で数を表すのが 2進数 です。共通テスト「情報Ⅰ」では、画像や文字のデジタル表現、論理演算、プログラムなど、多くの問題の前提として使われます。変換の手順を確実に身につけておきましょう。
なぜ2進数を使うのか
コンピュータの中の電子回路は、電圧が「高い・低い」、スイッチが「オン・オフ」のように、2つの状態を区別するのが得意です。2つの状態を1と0に対応させると、どんな数も2進数で表せます。この0か1の1桁分が ビット です。
2進数の各桁の重み
10進数は、右から 1の位、10の位、100の位…と10倍ずつ大きくなります。2進数は 2倍ずつ 大きくなります。
| 桁 | 8桁目 | 7桁目 | 6桁目 | 5桁目 | 4桁目 | 3桁目 | 2桁目 | 1桁目 |
|---|---|---|---|---|---|---|---|---|
| 重み | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
この重み(2の累乗)は、何度も使うので覚えてしまいましょう。
2進数 → 10進数
1 が立っている桁の重みを足すだけです。
例:1101 → 8 + 4 + 1 = 13
例:10110010 → 128 + 32 + 16 + 2 = 178
10進数 → 2進数
方法1:大きい重みから引いていく
例:13 を2進数にする
- 13 から 8 を引ける → 8の位は 1(残り 5)
- 5 から 4 を引ける → 4の位は 1(残り 1)
- 1 から 2 は引けない → 2の位は 0
- 1 から 1 を引ける → 1の位は 1
答えは 1101 です。
方法2:2で割り続ける
13 ÷ 2 = 6 余り 1、6 ÷ 2 = 3 余り 0、3 ÷ 2 = 1 余り 1、1 ÷ 2 = 0 余り 1
余りを**下から(最後に出たものから)**読むと 1101 です。
2進数 ⇔ 16進数
16進数 は 0〜9 と A〜F(A=10 〜 F=15)を使います。2進数の 4桁が16進数の1桁 にちょうど対応するので、下の桁から4桁ずつ区切って置き換えます。
| 2進数 | 16進数 | 2進数 | 16進数 | 2進数 | 16進数 | 2進数 | 16進数 |
|---|---|---|---|---|---|---|---|
| 0000 | 0 | 0100 | 4 | 1000 | 8 | 1100 | C |
| 0001 | 1 | 0101 | 5 | 1001 | 9 | 1101 | D |
| 0010 | 2 | 0110 | 6 | 1010 | A | 1110 | E |
| 0011 | 3 | 0111 | 7 | 1011 | B | 1111 | F |
例:11010110 → 1101 | 0110 → D | 6 → D6
例:101101(6桁)→ 上に0を補って 0010 | 1101 → 2D
逆に16進数から2進数にするときは、1桁ずつ4桁の2進数に置き換えます。例:A5 → 1010 0101 → 10100101
16進数は、長い2進数を短く書くために使われます。Webページの色(#FF8800 など)や、文字コードの表でもおなじみです。
n ビットで表せる数
ビットが1つ増えるごとに、表せる数は2倍になります。n ビットで表せるのは 2n 通り です。
| ビット数 | 表せる種類 | 0から始めたときの範囲 |
|---|---|---|
| 4ビット | 16通り | 0〜15 |
| 7ビット | 128通り | 0〜127 |
| 8ビット | 256通り | 0〜255 |
| 16ビット | 65,536通り | 0〜65,535 |
「最大値は 255、表せる数は 256通り」の違いは、引っかけとしてよく問われます。
逆に「○種類を表すには何ビット必要か」は、2n がその種類以上になる最小の n を探します。例えば 100種類なら、26 = 64 では足りず、27 = 128 なので 7ビット です。
2進数の足し算
10進数と同じように下の桁から計算し、1 + 1 = 10(2になったら桁上がり)とします。
0110 (6)
+ 0011 (3)
------
1001 (9)
1桁目:0 + 1 = 1、2桁目:1 + 1 = 10 → 0 を書いて1繰り上げ、3桁目:1 + 0 + 1(繰り上がり)= 10 → 0 を書いて1繰り上げ、4桁目:0 + 0 + 1 = 1
決められたビット数に収まらない桁上がりが起きることをオーバーフローといいます。例えば4ビットで 1000 + 1000 を計算すると、答えの 10000 は5桁になり、4ビットには入りません。足し算の回路は「論理回路」の半加算器・全加算器で作られています。
負の数の表し方:2の補数
コンピュータでは、負の数を2の補数で表すのが一般的です。
−3 を4ビットの2の補数で表す手順
- 3 を2進数で表す:
0011 - 0と1を反転する:
1100 - 1を足す:
1101→ これが −3
確かめると、3 + (−3) は 0011 + 1101 = 10000。4ビットからはみ出した桁を無視すると 0000 で、ちゃんと0になります。2の補数を使うと、引き算を足し算の回路で計算できるのが利点です。
2の補数では、一番上の桁が1なら負の数です。4ビットなら −8〜7、8ビットなら −128〜127 を表せます。
情報量の単位
| 単位 | 大きさ |
|---|---|
| 1 ビット(bit) | 0か1の1桁 |
| 1 バイト(B) | 8ビット |
| 1 KB(キロバイト) | 1,000 B(210 = 1,024 B とすることもある) |
| 1 MB(メガバイト) | 1,000 KB |
| 1 GB(ギガバイト) | 1,000 MB |
| 1 TB(テラバイト) | 1,000 GB |
1,000倍か1,024倍かは、問題文の指定に従います。
共通テストでの出題
- 2025年の本試験 第1問 問2:7本のLEDがそれぞれ点灯・消灯の2通りなので、点灯パターンは 27 = 128通り。「n 個の要素がそれぞれ2通り → 2n 通り」の考え方です。
- 2026年の本試験 第1問 問2:4×4マスの図案を、1行(4マス)=2進数4桁=16進数1桁で表し、左右反転・上下反転した図案を16進数で答える問題。2進数と16進数の対応が身についていれば、確実に解けます。
- 2026年の本試験 第2問B:4ビットの画素の値どうしを、ビットごとにOR・AND演算する問題。
よくある間違い
- 10進数→2進数で、余りを上から読む:余りは下(最後に出たもの)から読みます。
- 16進数で4桁ずつ区切るときに上から区切る:下の桁から区切り、足りない上の桁は0で補います。
- 「8ビットで表せる最大値は256」:最大値は255、種類が256通りです。
まとめ
- 2進数の各桁の重みは、右から 1, 2, 4, 8, 16, 32, 64, 128 …
- 2進数の4桁=16進数の1桁。下の桁から4桁ずつ区切って変換する
- n ビットで表せるのは 2n 通り
- 2進数の足し算は 1 + 1 = 10。負の数は2の補数(反転して1を足す)で表す