対象試験と出題頻度
2進数・10進数・16進数(基数変換)は、ITパスポート・基本情報技術者・応用情報技術者のすべてで出題される定番テーマです。
「10進数を2進数に変換せよ」「16進数を10進数に変換せよ」といった直球の計算問題だけでなく、ビット演算やIPアドレスの計算など上位テーマの土台になるため、ここが曖昧だと芋づる式に失点します。
FE R5年度 科目A 問1、IP R2秋期 問62など、繰り返し出題されています。
詳細をクリックして確認
ITパスポート
基本情報技術者
応用情報技術者
★★★★☆
ランクA(重要)必ず覚えておくべき
用語の定義
2進数・10進数・16進数とは、一言で言うと
「数を何個の記号で表すかという”数え方のルール(基数)”が異なる記数法」
のことです。
イメージとしては、「日本語・英語・中国語の翻訳」に近いものです。
「りんご=apple=苹果」はすべて同じ果物を指していますが、使う言語が違います。
同じように、10進数の「15」も、2進数では「1111」、16進数では「F」と表記が変わるだけで、表している量は同じです。
📊 2進数・10進数・16進数の基本情報
| 項目 | 2進数 | 10進数 | 16進数 |
|---|---|---|---|
| 英語名 | Binary | Decimal | Hexadecimal |
| 基数 | 2 | 10 | 16 |
| 使う記号 | 0, 1 | 0〜9 | 0〜9, A〜F |
| 主な用途 | コンピュータ内部処理 | 人間の日常計算 | メモリアドレス・色コード |
詳細解説
コンピュータの内部は電気のON/OFFだけで動いています。
この「2つの状態」を数で表すと0と1、つまり2進数になります。
人間にとって馴染みのある10進数や、2進数を短く書き直す手段としての16進数は、あくまで人間側の都合で使い分けるものです。
なぜ16進数が必要なのか
2進数はコンピュータの内部表現そのものですが、桁数が膨大になり人間には読みづらいという欠点があります。
たとえば10進数の「255」は2進数だと「11111111」ですが、16進数なら「FF」のたった2桁で済みます。
16は2の4乗(24 = 16)なので、2進数4桁をそのまま16進数1桁に対応させることができ、変換が機械的に行える点が最大の利点です。
基数変換の方法
各進数間の変換を「基数変換」と呼びます。変換パターンごとに手順が異なるため、それぞれ整理します。
▶ 10進数 → 2進数(割り算の繰り返し)(クリックで展開)
10進数を2で割り続け、余りを下から順に並べます。
例:10進数「13」を2進数に変換
13 ÷ 2 = 6 … 余り 1
6 ÷ 2 = 3 … 余り 0
3 ÷ 2 = 1 … 余り 1
1 ÷ 2 = 0 … 余り 1
↑ 下から読む → 1101
∴ 13(10進数)= 1101(2進数)
▶ 2進数 → 10進数(各桁の重みを足す)(クリックで展開)
各桁に「2の累乗」の重みを掛けて合計します。
例:2進数「1101」を10進数に変換
| 桁位置 | 3 | 2 | 1 | 0 |
| 2の累乗 | 2³=8 | 2²=4 | 2¹=2 | 2⁰=1 |
| ビット | 1 | 1 | 0 | 1 |
| 計算 | 1×8=8 | 1×4=4 | 0×2=0 | 1×1=1 |
8 + 4 + 0 + 1 = 13
∴ 1101(2進数)= 13(10進数)
▶ 2進数 ↔ 16進数(4桁ずつ区切る)(クリックで展開)
2進数を下位から4桁ずつ区切り、各グループを16進数の1桁に変換します。逆も同様です。
例:2進数「11010011」を16進数に変換
4桁ずつ区切る → 1101 | 0011
1101 → 8+4+0+1 = 13 → D
0011 → 0+0+2+1 = 3 → 3
∴ 11010011(2進数)= D3(16進数)
対応表(暗記推奨)
| 10進 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 16進 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 2進 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
▶ 16進数 → 10進数(各桁の重みを足す)(クリックで展開)
16進数を直接10進数に変換する場合は、各桁に「16の累乗」の重みを掛けて合計します。
ただし、16進数→2進数→10進数と経由したほうがミスしにくいため、試験本番ではそちらを推奨します。
例:16進数「2B」を10進数に変換
2 × 16¹ = 32
B(=11)× 16⁰ = 11
32 + 11 = 43
∴ 2B(16進数)= 43(10進数)
変換ルートの全体像
ここだけは確実に押さえてください。すべてのパターンを暗記する必要はなく、「2進数を中継点にする」のが最も効率的です。
🔄 基数変換の全体ルート
┌─────────────────────────────────┐
│ 10進数 ←──重みの合計──→ 2進数 ←──4桁区切り──→ 16進数 │
──2で割る──→
└─────────────────────────────────┘
※ 16進数と10進数の直接変換も可能だが、2進数を経由するほうがミスしにくい
では、この基数変換が試験でどのように問われるか見ていきましょう。
💡 基数変換の核心を3行で
・2進数はコンピュータの内部言語、10進数は人間の日常言語、16進数は2進数を人間が読みやすくした短縮表記
・10進数→2進数は「2で割り続けて余りを逆順に並べる」、2進数→10進数は「各桁×2の累乗の合計」
・2進数と16進数は「4桁ずつ区切る」だけで相互変換でき、これが最も頻出の変換テクニック
試験ではこう出る!
基数変換は、IPAの各試験区分で最も出題頻度の高い計算テーマの一つです。
出題パターンは大きく3つに分かれます。
📊 過去問での出題実績
| 試験回 | 出題内容 | 問われたポイント |
|---|---|---|
| FE R5年度 科目A 問1 |
16進小数0.Cを10進小数に変換する問題。 | ・C=12を2進数1100に変換し、小数点以下の重みで計算 ・正解は0.75 ・H19秋FE問1と同一問題(流用) |
| IP R2秋期 問62 |
10進数155を2進数で表したものを選ぶ問題。 | ・155を2で割り続ける基本的な変換問題 ・正解は10011011 ・選択肢にはビットの順序を入れ替えたひっかけあり |
| AP H27春期 午前 問2 |
2けたの2進数x₁x₂が表す整数を式で表現する問題。 | ・各桁の重み(2¹、2⁰)を変数で一般化 ・基数変換の「仕組み」を数式で理解しているかを確認 |
📝 IPA試験での出題パターン
パターン1:「N進数をM進数に変換せよ」
最も直球の出題。10進数→2進数、16進数→10進数、2進数→16進数のいずれかを計算させる。選択肢にはビット順を逆にしたものや、途中計算を間違えると到達する値が仕込まれている。
パターン2:「16進小数を10進小数に変換せよ」
FE R5年度問1のように、小数部分の変換を問う形式。16進数の小数部は16-1、16-2…の重みを使う点がポイント。2進数を経由すると計算ミスが減る。
パターン3:「基数変換の流れ図・プログラムを読み解け」
FE・APでは、変換アルゴリズムを擬似言語や流れ図で示し、処理結果を問う応用問題も出る。変換の原理(割り算の繰り返し・重みの合計)を理解していれば対応できる。
試験ではここまででOKです。8進数(Octal)も出題範囲ですが、考え方は同じで「3桁ずつ区切る」に変わるだけなので深追いは不要です。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. 16進数「3A」を10進数に変換したものとして、最も適切なものはどれでしょうか?
- A. 48
- B. 52
- C. 58
正解と解説を見る
正解:C
解説:
16進数「3A」は、3 × 16¹ + A(=10) × 16⁰ = 48 + 10 = 58 です。各桁に16の累乗の重みを掛けて合計する、基本的な変換手順で求まります。
選択肢Aの48は、16進数「30」を10進数に変換した値であり、A(=10)の加算を忘れた場合に陥る誤答です。選択肢Bの52は、Aを10ではなく4と誤認した場合の計算結果(48 + 4 = 52)であり、16進数のA〜Fの対応を正しく覚えていないと選んでしまう典型的なひっかけです。
よくある質問(FAQ)
Q. 8進数(Octal)は試験に出ますか?
出ます。ITパスポートではH21秋期 問64で「8進数の55を16進数で表したもの」が出題されています。8進数は2進数を3桁ずつ区切って変換する点だけが異なり、考え方は16進数の場合と同じです。「16進数=4桁区切り」「8進数=3桁区切り」とセットで覚えておけば、出題されても慌てることはありません。
Q. 小数の基数変換はどうやるのですか?
10進小数を2進小数にする場合は「2を掛けて整数部分を取り出す」操作を繰り返します。たとえば0.625なら、0.625×2=1.25(整数部1)、0.25×2=0.5(整数部0)、0.5×2=1.0(整数部1)で、上から順に並べて「0.101」となります。10進数の割り算(整数部)の逆で「掛け算(小数部)」と覚えるのがコツです。
Q. 実務では基数変換をどこで使いますか?
最も身近な例は、Webデザインで使うカラーコードです。「#FF5733」のような表記は16進数で赤(FF)・緑(57)・青(33)の強さを指定しています。ほかにも、IPアドレスのサブネット計算、メモリダンプの解析、文字コード(Unicodeのコードポイントは16進数表記)など、エンジニアの日常業務で頻繁に登場します。
Q. 基数変換と補数は別のテーマですか?
別のテーマです。基数変換は「進数間の表記の変換」、補数は「コンピュータ内部で負の数を表現する仕組み」です。ただし、補数を理解するには2進数の知識が前提になるため、基数変換を先にマスターしてから補数に進むのが効率的な学習順序です。