プログラミングやコンピューターサイエンスを学ぶうえで欠かせないのが「16進数から10進数への変換」です。
16進数はコンピューターの世界で広く使われていますが、私たちが日常的に扱う10進数への変換方法を理解することで、プログラムのデバッグやメモリアドレスの読み解きがぐっと楽になります。
変換には一定の公式と手順があり、慣れれば頭の中でもすばやく計算できるようになるでしょう。
本記事では、16進数から10進数への変換公式・具体的な計算手順・重み付けの考え方・簡単な計算方法まで、わかりやすく解説していきます。
16進数から10進数への変換の基本公式と考え方
それではまず、16進数から10進数への変換の基本公式と考え方について解説していきます。
16進数を10進数に変換するには、各桁の数値にその桁の重み(16のべき乗)を掛け合わせて合計するという方法を使います。
これは「重み付け」と呼ばれる考え方で、10進数でも無意識に使っている計算原理と同じです。
たとえば10進数の「123」は、1×100+2×10+3×1と分解できます。
同様に16進数では、各桁の重みが16の0乗(1)・16の1乗(16)・16の2乗(256)・16の3乗(4096)……と続くのです。
16進数から10進数への変換公式
n桁の16進数 = d(n-1)×16^(n-1) + … + d1×16^1 + d0×16^0
※d は各桁の数値(A=10、B=11、C=12、D=13、E=14、F=15)
※16^0=1、16^1=16、16^2=256、16^3=4096、16^4=65536
A〜Fのアルファベットはそれぞれ10〜15の数値として扱うことが変換のポイントです。
この変換規則を覚えておくことで、どんな桁数の16進数でも10進数へ変換できるでしょう。
16進数の各桁の重みを理解する
変換を正確に行うために、16進数の各桁が持つ重みを理解しておくことが重要です。
| 桁の位置(右から) | 重み(16のべき乗) | 具体的な値 |
|---|---|---|
| 1桁目(最下位) | 16^0 | 1 |
| 2桁目 | 16^1 | 16 |
| 3桁目 | 16^2 | 256 |
| 4桁目 | 16^3 | 4096 |
| 5桁目 | 16^4 | 65536 |
右端の桁から順番に重みが1・16・256・4096……と16倍ずつ増えていく規則性があります。
この重みを覚えておくと、変換作業がスムーズに行えるようになるでしょう。
特に「FF」は255(8ビットの最大値)、「FFFF」は65535(16ビットの最大値)という値は、プログラミングで頻出する数値として覚えておくと便利です。
1桁の16進数を10進数に変換する
まず最もシンプルな1桁の16進数の変換から確認していきましょう。
1桁の場合、重みは16^0=1なので、そのまま数値を読み取るだけです。
1桁の16進数から10進数への変換例
16進数「A」→ A=10 → 10進数「10」
16進数「F」→ F=15 → 10進数「15」
16進数「9」→ 9×1=9 → 10進数「9」
0〜9はそのまま同じ値、A〜Fはそれぞれ10〜15に読み替えるだけなので、1桁の変換は非常にシンプルです。
アルファベット部分の変換を正確に行うコツ
16進数でつまずきやすいのが、A〜Fのアルファベットを数値に変換する部分です。
語呂合わせとして「AはTen(10)、BはEleven(11)…」と英語の数字と結びつけて覚える方法が有効でしょう。
または「Aは10、あとは順番に+1」と覚えておくだけで、B=11、C=12、D=13、E=14、F=15とすぐに導き出せます。
この対応関係を自然に思い浮かべられるようになると、16進数の読み書きが格段に速くなるでしょう。
2桁・3桁・4桁の16進数を10進数に変換する手順
続いては、複数桁の16進数を10進数に変換する具体的な手順を確認していきます。
桁数が増えても、各桁の値に対応する重みを掛けて合計するという基本手順は変わりません。
2桁の16進数の変換手順
2桁の16進数を変換する手順を具体例で確認します。
2桁の16進数「2F」を10進数に変換する
2桁目(左):2 × 16^1 = 2 × 16 = 32
1桁目(右):F = 15 × 16^0 = 15 × 1 = 15
合計:32 + 15 = 47
答え:16進数「2F」= 10進数「47」
このように左の桁から順番に「桁の値×重み」を計算し、すべて足し合わせるのが基本の手順です。
「1A」であれば1×16+10×1=26、「FF」であれば15×16+15×1=255と計算できるでしょう。
3桁の16進数の変換手順
3桁の16進数の変換例を見ていきましょう。
3桁の16進数「1FF」を10進数に変換する
3桁目(左):1 × 16^2 = 1 × 256 = 256
2桁目(中):F = 15 × 16^1 = 15 × 16 = 240
1桁目(右):F = 15 × 16^0 = 15 × 1 = 15
合計:256 + 240 + 15 = 511
答え:16進数「1FF」= 10進数「511」
3桁になると計算量が増えますが、各桁の計算を順番にこなせば確実に変換できます。
「100」(16進数)は256(10進数)、「FFF」は4095(10進数)になる点も覚えておくと役立つでしょう。
4桁の16進数の変換手順
プログラミングでよく登場する4桁の16進数の変換例も確認します。
4桁の16進数「ABCD」を10進数に変換する
4桁目:A=10 × 16^3 = 10 × 4096 = 40960
3桁目:B=11 × 16^2 = 11 × 256 = 2816
2桁目:C=12 × 16^1 = 12 × 16 = 192
1桁目:D=13 × 16^0 = 13 × 1 = 13
合計:40960 + 2816 + 192 + 13 = 43981
答え:16進数「ABCD」= 10進数「43981」
4桁の計算は手計算だとやや手間がかかりますが、Windowsの電卓(プログラマーモード)やPythonのint関数を使えば瞬時に変換できます。
実務では計算ツールを活用しながら、仕組みの理解は手順通りに行うというバランスが大切でしょう。
簡単な計算方法とツールを使った変換
続いては、より簡単な計算方法とツールを使った変換方法を確認していきます。
手計算の仕組みを理解したうえで、実務では効率的なツールを活用することが重要です。
Windowsの電卓(プログラマーモード)を使った変換
Windowsに標準搭載されている電卓には「プログラマーモード」があり、16進数と10進数の相互変換が簡単に行えます。
電卓を起動して左上のメニューから「プログラマー」を選択し、「HEX」モードで16進数を入力すると「DEC」欄に10進数が自動表示されます。
逆に「DEC」モードで10進数を入力すれば、「HEX」欄に16進数が表示されるため、双方向の変換が瞬時に行えるでしょう。
Pythonを使った変換方法
プログラミングでの変換にはPythonが非常に便利です。
Pythonでの16進数→10進数変換
int(‘FF’, 16) → 255
int(‘ABCD’, 16) → 43981
int(‘0xFF’, 16) → 255(0xプレフィックス付きも対応)
10進数→16進数変換
hex(255) → ‘0xff’
hex(43981) → ‘0xabcd’
int関数の第2引数に基数(16)を指定するだけで変換できるため、スクリプトでの大量変換にも活用できます。
Excelでは「HEX2DEC」関数を使うことで、スプレッドシート上でも16進数から10進数への変換が可能でしょう。
暗算で素早く変換するコツ
試験やデバッグ作業で素早く変換できると便利な暗算のコツも紹介します。
2桁の16進数「XY」の場合、「X×16+Y」という式に当てはめるだけなので、16の段の九九を覚えておくと非常に速く計算できます。
16の段は1〜15まで(16、32、48、64、80、96、112、128、144、160、176、192、208、224、240)を覚えることになりますが、16・32・64・128・256という2のべき乗の系列として覚えると記憶しやすいでしょう。
「FF」=255、「80」=128、「40」=64という頻出値を先に覚えておくことも実践的なアプローチです。
まとめ
本記事では、16進数から10進数への変換公式・各桁の計算手順・簡単な変換方法・ツールの活用まで詳しく解説してきました。
変換の基本は「各桁の値×16のべき乗の重み」を合計するという一貫した手順です。
A〜Fをそれぞれ10〜15の数値として扱うことと、各桁の重み(1・16・256・4096……)を把握しておくことが変換の核心といえるでしょう。
実務では電卓やPythonなどのツールを活用しながら、仕組みの理解は手計算の手順で身につけることをおすすめします。
ぜひ繰り返し練習して、16進数と10進数の変換をスムーズに行えるようにしてください。