基数変換(radix conversion)

10進数・2進数・16進数など、同じ数を別の基数の表し方に書き直すこと。

もう少し詳しい説明

基数変換は、同じ数を、別の基数の表し方に書き直すことです。

基数とは、1桁上がるごとに何倍になるかを表す数です。ふだん使う10進数は、1の位・10の位・100の位と、10倍ずつ大きくなります。これが基数10です。

表し方基数使う数字1桁上がるごとに
10進数100〜910倍
2進数20と12倍
16進数160〜9とA〜F16倍
8進数80〜78倍

コンピュータの中は0と1しか扱えないので、中身は2進数です。ただし2進数は桁が長くて人が読みにくいので、4桁ずつまとめた16進数で書くことがよくあります。

2進数 → 10進数:重みを足す

2進数の各桁には、右から 1・2・4・8・16… と2倍ずつ大きくなる重みがあります。

桁の重み12864321684212進数00101101足すもの32841
2進数の各桁には、右から 1・2・4・8… と2倍ずつ大きくなる「重み」があります。1が立っている桁の重みだけを足すと、10進数に直せます。この例では 32+8+4+1 = 45 です。

1が立っている桁の重みだけを足すと、10進数になります。

00101101 = 32 + 8 + 4 + 1 = 45

重みは 1・2・4・8・16・32・64・128 の8つを覚えておけば、8桁までは暗算できます。

10進数 → 2進数:2で割り続ける

逆向きは、2で割り続けて、余りを下から読むのが確実です。13 で試します。

計算商余り
13 ÷ 261
6 ÷ 230
3 ÷ 211
1 ÷ 201

余りを下から上へ読むと 1101。確かめると 8 + 4 + 1 = 13 です。

もう1つのやり方は、重みの大きいほうから引いていく方法です。13 から 8 を引いて残り5、5 から 4 を引いて残り1、1 から 1 を引いて0。引けた桁(8・4・1)に1を立てれば 1101 です。小さい数なら、こちらのほうが速く出せます。

2進数 ⇔ 16進数:4桁ずつ区切る

ここがいちばん楽なところです。

2進数1010111110進数にすると101516進数AF
2進数を右から4桁ずつに区切ると、それぞれがそのまま16進数の1桁になります。4桁の2進数は0〜15の16通りなので、16進数の1桁(0〜F)とちょうど同じ数だけあるからです。1010 は10なのでA、1111 は15なのでFです。

2進数を右から4桁ずつに区切れば、それぞれがそのまま16進数の1桁になります。4桁の2進数は 0〜15 の16通りで、16進数の1桁とちょうど同じ数だけあるからです。

10進数2進数16進数
910019
101010A
111011B
121100C
131101D
141110E
151111F

16進数では、10から15を1桁で書くために A〜F を使います。A=10、F=15 の2つだけ覚えれば、あいだは数えられます。

8進数は同じ考え方で、3桁ずつ区切ります。

16進数 → 10進数

16進数の重みは、右から 1・16・256… です。

2A = 2 × 16 + 10(A)× 1 = 32 + 10 = 42

迷ったら、いったん2進数を経由しても構いません。2A は 0010 1010 なので、32 + 8 + 2 = 42 と同じ答えになります。

小数の変換

2進数の小数点より右の桁は、0.5・0.25・0.125… と半分ずつになります。

0.101(2進数) = 0.5 + 0.125 = 0.625

10進数の小数を2進数に直すときは、2倍して、整数部分を取り出すことを繰り返します。0.625 なら、1.25 → 整数部分1、0.25 を2倍して 0.5 → 0、0.5 を2倍して 1.0 → 1。上から読んで 0.101 です。

ここで大事な性質があります。10進数の 0.1 は、2進数では割り切れません。2倍を何度繰り返しても0にならず、0.000110011… と続きます。コンピュータは決まった桁数に丸めて記録するので、0.1 を正確には表せません。これが浮動小数点数の丸め誤差の出どころです。

覚え方:重みの表を書いてから考える

どの変換も、桁の重みを書き出してから始めると間違えません。

そのうえで、2進数と16進数のあいだは4桁ずつ。これだけ持っておけば、どの組合せも同じ手順で解けます。

→ 進数変換の練習問題を解く

試験ではこう出る

科目A(旧・午前)の基礎理論分野で出ます。ITパスポートでも出題されます。多いのは、2進数・10進数・16進数のあいだで値を変換させる問題と、2進数の小数を10進数に直させる問題です。応用情報では、「10進数の 0.1 が2進数で正確に表せない」といった性質を問う形や、補数・浮動小数点数と組み合わせた問題になります。

解くときは、重みの表を余白に書いてから始めるのが確実です。16進数が絡む問題は、いったん2進数を経由すると、4桁ずつ区切るだけの作業に変わります。選択肢に「桁を並べただけの数」(2A → 210 など)が混ざっていることがあるので、重みを掛け忘れていないかを最後に確かめてください。

関連する用語

補数
負の数を2進数で表すための形。2進数の並びをそのまま読むだけでは負の数は表せない
浮動小数点数
数を符号・指数・仮数に分けて表す形式。小数の基数変換で出る誤差とつながる
シフト演算
ビットの並びを左右にずらす演算。左へ1つずらすと値が2倍になる
論理回路
0と1の入力から0か1を返す回路。コンピュータが2進数で動く理由そのもの
文字コード
文字に番号を割り当てる決まり。番号は16進数で書かれることが多い

ミニクイズ

16進数の 2A を10進数で表したものはどれか。

正解は 4番:42

16進数の各桁の重みは、右から 1、16、256… です。2A の右の桁 A は10を表すので 10 × 1 = 10、左の桁 2 は 2 × 16 = 32。足して 32 + 10 = 42 になります。210 は「2」と「10」を並べて書いただけで、桁の重みを掛けていません。12 は 2 と 10 をそのまま足した値で、左の桁に16を掛け忘れています。32 は左の桁だけを計算して、右の桁 A を足し忘れた値です。

間違えた用語の復習リストを見る →

最終更新:2026-09-21