「2進数とか16進数とか…数字のくせに何が何進んでるの?」と思ったことはありませんか?基本情報技術者試験の過去問を開いて「0b1010」や「0xFF」という表記が出てきた瞬間に「これ暗号じゃないか」と感じる人は少なくないと思います。
でも安心してください。n進数は”数え方のルールをちょっと変えただけ”の話です。仕組みさえ理解できれば、変換の計算は誰でもできます。この記事では基本情報のn進数(2進数・8進数・16進数)の意味と変換方法、試験で確実に得点するためのコツをひとつずつ丁寧に解説します。
- n進数の意味と2進数・8進数・16進数の違いがわかる
- n進数→10進数・10進数→n進数の変換が自分でできる
- 16進数⇔2進数の高速変換テクニックが身につく
- 試験に頻出するパターンを把握して得点源にできる
N進数の基礎知識と変換の仕組みを完全理解

N進数とは?10進数との違いをやさしく解説
「n進数」とは、n種類の数字だけを使ってn個で桁が上がる数え方のことです。私たちが日常的に使っている「10進数」は0〜9の10種類を使い、9の次で桁が上がります(9→10)。これが10進数のルールです。
同じように考えると、2進数は「0と1の2種類だけを使い、1の次で桁が上がる」数え方です。つまり2進数の「1」の次は「10」になります。この「10」は2進数で”2″を意味しているんですね。
| 進数 | 使う数字 | 桁が上がるタイミング | 主な用途 |
|---|---|---|---|
| 2進数 | 0, 1 | 1の次(1→10) | コンピュータ内部処理 |
| 8進数 | 0〜7 | 7の次(7→10) | Unix系パーミッション等 |
| 10進数 | 0〜9 | 9の次(9→10) | 日常生活 |
| 16進数 | 0〜9, A〜F | Fの次(F→10) | メモリアドレス・カラーコード |
つまりどの進数も「桁の上がり方のルールが違うだけ」で、考え方の本質はまったく同じです。この感覚をまず掴んでおきましょう。
2進数・8進数・16進数それぞれの特徴と使いどころ
コンピュータは電気信号の「オン(1)」と「オフ(0)」だけで動いています。そのため、コンピュータの言語は2進数が基本です。ただし、2進数は桁数がすぐ長くなってしまうため、人間が読み書きしやすくする工夫として8進数・16進数が使われています。
- 2進数:コンピュータが直接扱う言語。0と1の2種類のみ
- 8進数:2進数3桁をまとめて1桁で表現。Unixのファイルパーミッション(例:755)などで登場
- 16進数:2進数4桁をまとめて1桁で表現。メモリアドレスやHTMLカラーコード(#FF5733など)で頻用
特に16進数は2進数の「読みやすい略記法」と考えると理解が早まります。2進数4桁(0000〜1111)がちょうど16進数1桁(0〜F)に対応しているからです。この関係は後の変換テクニックでとても役立ちます。
N進数→10進数の変換(重み計算法)
n進数から10進数への変換は、各桁の数字に「その桁の重み(n の累乗)」を掛けて足し合わせるだけです。「重み計算法」と呼ばれる方法で、原理さえわかれば確実に計算できます。
例①:2進数「1011」を10進数に変換
| 桁(右から) | 重み(2の累乗) | 桁の数字 | 計算 |
|---|---|---|---|
| 4桁目(左端) | 2³ = 8 | 1 | 1 × 8 = 8 |
| 3桁目 | 2² = 4 | 0 | 0 × 4 = 0 |
| 2桁目 | 2¹ = 2 | 1 | 1 × 2 = 2 |
| 1桁目(右端) | 2⁰ = 1 | 1 | 1 × 1 = 1 |
| 合計 | ― | ― | 8 + 0 + 2 + 1 = 11 |
1011₂ = 11₁₀ となります。
例②:16進数「2A」を10進数に変換
16進数のAは10なので、「2A₁₆」は「2の桁が2、1の桁がA(=10)」と読みます。計算すると:2 × 16¹ + 10 × 16⁰ = 32 + 10 = 42₁₀ です。
10進数→N進数の変換(割り算法)
今度は逆方向、10進数からn進数への変換です。「目標の基数で割り続けて、余りを下から読む」というシンプルな方法で変換できます。
商と余りを記録する。商が0になるまで繰り返す。
最後に出た余りが「最上位桁(左端)」になる。
例:13₁₀を2進数に変換
| 割り算 | 商 | 余り |
|---|---|---|
| 13 ÷ 2 | 6 | 1 ←最下位桁 |
| 6 ÷ 2 | 3 | 0 |
| 3 ÷ 2 | 1 | 1 |
| 1 ÷ 2 | 0 | 1 ←最上位桁 |
余りを下から読むと 1101₂。つまり 13₁₀ = 1101₂ です。
2進数⇔16進数の高速変換テクニック
2進数と16進数の変換は、上で説明した「重み計算法」や「割り算法」を使わなくても、もっと速く変換できる方法があります。「2進数4桁=16進数1桁」という対応関係を使う方法です。
| 2進数(4桁) | 16進数 | 10進数 |
|---|---|---|
| 0000 | 0 | 0 |
| 0001 | 1 | 1 |
| 0010 | 2 | 2 |
| 0011 | 3 | 3 |
| 0100 | 4 | 4 |
| 0101 | 5 | 5 |
| 0110 | 6 | 6 |
| 0111 | 7 | 7 |
| 1000 | 8 | 8 |
| 1001 | 9 | 9 |
| 1010 | A | 10 |
| 1011 | B | 11 |
| 1100 | C | 12 |
| 1101 | D | 13 |
| 1110 | E | 14 |
| 1111 | F | 15 |
使い方:2進数を右から4桁ずつ区切って、対応する16進数1文字に置き換えるだけ。
例:2進数「1010 1111」→ 右から4桁区切り → 1010 | 1111 → A | F → AF₁₆ これだけです!10進数を経由する必要がなく、試験本番でも素早く変換できます。
N進数を基本情報試験で確実に得点する勉強法

試験に頻出するN進数の出題パターン
基本情報技術者試験でn進数が問われるのは、主に科目A(旧午前問題)の計算問題です。出題パターンはほぼ決まっており、以下の3種類が繰り返し登場します。
| パターン | 内容 | 頻出度 |
|---|---|---|
| 基数変換 | 2進数↔10進数↔16進数の相互変換 | ★★★ |
| 2進数の加算 | 2進数同士を足す計算(桁上がりに注意) | ★★☆ |
| 補数表現 | 負の数を2の補数で表現する方法 | ★★☆ |
| シフト演算 | ビットを左右にずらす計算(n進数と組み合わせ) | ★★★ |
| 16進数の四則演算 | 16進数同士の足し算・引き算 | ★☆☆ |
特に「基数変換」と「シフト演算」の組み合わせ問題は頻出です。n進数の変換を確実にマスターしておくと、シフト演算の問題でも得点源にできます。
計算ミスを防ぐ!チェックポイント一覧
n進数の問題は「仕組みはわかったのに計算ミスをしてしまう」ケースが多いです。以下のチェックポイントを意識するだけでミスを大幅に減らせます。
- 重み計算のとき、右端の桁の重みを「n⁰ = 1」と確認してから始める
- 16進数のA〜Fは10〜15として計算する(Aを単純に「10」と読み間違えない)
- 割り算法で余りを書くとき、上から順番に並べず「下から読む」を忘れない
- 2進数⇔16進数の変換で4桁区切りにするとき、左端が4桁未満なら0を補って揃える
- 問題文の進数表記(₂や₁₆など)を見落とさない(どの進数かを確認してから解く)
ビット演算との組み合わせ問題の攻略法
n進数の次のステップとして押さえたいのがシフト演算です。シフト演算は「2進数のビット列を左右にずらす操作」で、n進数の変換を理解していれば自然に理解できます。
たとえば「左に1ビットシフトする」とは、2進数の各桁を1つ左に移動することです。例えば「0101₂(=5₁₀)」を左に1ビットシフトすると「1010₂(=10₁₀)」になります。これは10進数で「2倍になった」ことを意味します。
| 操作 | 効果 | 例(0101₂ = 5₁₀) |
|---|---|---|
| 左シフト×1 | 2倍 | 1010₂ = 10₁₀ |
| 左シフト×2 | 4倍 | 10100₂ = 20₁₀ |
| 右シフト×1 | 1/2倍(切り捨て) | 0010₂ = 2₁₀ |
シフト演算はn進数の理解と直結しているので、変換が得意になった後はぜひセットで学習しておきましょう。シフト演算の詳しい解説はこちらでも確認できます。
過去問で狙われる変換パターン総まとめ
基本情報技術者試験でn進数の問題を解くとき、以下の変換パターンをスムーズにこなせれば得点を落とすことはほぼありません。頻出パターンを一覧で確認しておきましょう。
| 変換パターン | 手法 | ポイント |
|---|---|---|
| 2進数 → 10進数 | 重み計算法 | 右端の重みは2⁰=1 |
| 10進数 → 2進数 | 割り算法(÷2) | 余りを下から読む |
| 16進数 → 10進数 | 重み計算法 | A〜F=10〜15として計算 |
| 10進数 → 16進数 | 割り算法(÷16) | 余りが10以上はA〜Fに変換 |
| 2進数 → 16進数 | 4桁区切り対応法 | 右から4桁ずつ区切る |
| 16進数 → 2進数 | 4桁区切り対応法 | 16進数1桁を2進数4桁に展開 |
この表をしっかり頭に入れた上で、過去問を使って実際に手を動かして練習するのが一番の近道です。計算問題全般の攻略法については、基本情報の計算問題攻略ガイドもあわせて読んでみてください。
まとめ:N進数マスターへの最短ルート
基本情報のn進数は、仕組みを理解すれば計算自体は決して難しくありません。重み計算法・割り算法・4桁区切り変換の3つさえマスターすれば、どのパターンが出ても対応できます。
- まず「重み計算法」でn進数→10進数の変換を5問練習する
- 次に「割り算法」で10進数→2進数・16進数の変換を5問練習する
- 最後に「4桁区切り変換」で2進数⇔16進数を瞬時に変換できるようにする
n進数の変換に慣れたら、次は算術演算(加算・減算・乗算)の学習に進みましょう。n進数の理解が土台になっているので、きっとスムーズに進めます。
- n進数と基数変換は同じものですか?
「基数変換」とは、n進数で書かれた数値を別の進数に変換することです。つまり基数変換はn進数を扱う操作の総称で、「2進数→10進数に変換する」のも「16進数→2進数に変換する」のも、すべて基数変換です。試験では「基数変換」という言葉で出題されることがほとんどです。
- 16進数のA〜Fはどうやって暗記すればいいですか?
「10=A、11=B、…、15=F」と覚えるのが基本ですが、A〜Fは「10進数の10〜15のアルファベット略記」と理解すると自然に身につきます。試験本番では対応表を問題用紙の余白に書いてから解き始めるとミスを防げます。
- 8進数はどんなときに使われますか?
現代のプログラミングでは8進数を直接使う場面は少ないですが、Unixシステムのファイルパーミッション(755、644など)が代表例です。試験でも「2進数⇔8進数の変換(3桁区切り)」が問われることがあります。8進数は2進数3桁=8進数1桁という対応で変換できます。


コメント