基数変換ツール
2進数・8進数・10進数・16進数など、基数2〜36の任意の整数を相互に変換できます。数値を入力して変換元と変換先の基数を選ぶだけで変換結果を表示します。
入力
結果
基数と基数変換
基数変換とは、10進数・2進数・16進数など異なる位取り記数法の間で、同じ整数を表記し直す操作です。値そのものは変わらず、書き表す記法だけが変わります。
あらゆる整数は、位取り記数法で表すことができます。基数(または底)とは、使用する異なる数字記号の個数と、各桁が持つ重みを決めるものです。
私たちが日常的に使う10進数では、0〜9の10種類の数字を使い、右から1桁ずつ左に向かうたびに10倍の重みになります。
3,472=3×103+4×102+7×101+2×100基数を2(2進数)に変えると、使える数字は0と1だけになり、各桁の重みは2倍ずつ増えます。
10112=1×23+0×22+1×21+1×20=1110これがすべての基本です。異なる基数は、同じ整数を別の方法で書き表しているにすぎません。
よく使われる4つの基数
| 基数 | 名称 | 使用する数字 | 主な用途 |
|---|---|---|---|
| 2 | 2進数(二進数) | 0, 1 | コンピュータが内部でデータを扱う方法 |
| 8 | 8進数(八進数) | 0〜7 | Unixファイルのパーミッション(例:chmod 755) |
| 10 | 10進数(十進数) | 0〜9 | 日常の計算 |
| 16 | 16進数(十六進数) | 0〜9, A〜F | メモリアドレス、カラーコード(#FF8800)、バイト値 |
10を超える基数では、追加の記号として英字を使います。A = 10、B = 11、…と続き、Z = 35 となります。このため、本ツールは基数2〜36に対応しています(36が 0–9 と A–Z で表現できる最大の基数です)。
X進数から10進数への変換
任意の基数から10進数に変換するには、各桁に「基数の位数乗」を掛けて合計します(右端の桁が0乗)。
16進数の FF を10進数に変換:
2進数の 1010 を10進数に変換:
8進数の 377 を10進数に変換:
FF₁₆、377₈、255₁₀ は三つとも同じ整数の異なる表記であることがわかります。
10進数からX進数への変換
逆方向の変換は、目標の基数で繰り返し割り算を行い、余りを収集します。余りを下から上に読み上げると変換結果になります。
255₁₀ を16進数に変換:
| 手順 | 被除数 | ÷ 16 | 余り |
|---|---|---|---|
| 1 | 255 | 15 | 15 → F |
| 2 | 15 | 0 | 15 → F |
下から読むと:FF ✓
10₁₀ を2進数に変換:
| 手順 | 被除数 | ÷ 2 | 余り |
|---|---|---|---|
| 1 | 10 | 5 | 0 |
| 2 | 5 | 2 | 1 |
| 3 | 2 | 1 | 0 |
| 4 | 1 | 0 | 1 |
下から読むと:1010 ✓
任意の2つの基数間の変換は、「元の基数 → 10進数 → 目標基数」の手順で行えます。本ツールも内部的にこの方法を使っています。
ショートカット:2進数 ↔ 8進数 ↔ 16進数
8 = 2³、16 = 2⁴ という関係から、2進数とこれら二つの基数の間は桁のグループ化だけで変換できます。割り算は不要です。
2進数 → 8進数:右から3桁ずつまとめ、各グループを1桁の8進数に変換。
2010510171112=25782進数 → 16進数:同じ要領で4桁ずつまとめます。
A1010F11112=AF1616進数の2桁がちょうど1バイト(8ビット)に対応するため、プログラマが生のバイト列を読むときに16進数がよく使われます。
実際の使用例
プログラミング・デバッグ
- CSSの16進数カラーコード:
#FF8800は R =FF(255)、G =88(136)、B =00(0)を意味します。 - デバッガやスタックトレースのメモリアドレスは常に16進数で表示されます(例:
0x7fff8a3b0c40)。 - ビットマスクやフラグは10進数より2進数や16進数の方が読みやすいことが多く、特定のビット位置との対応が一目でわかります。
- Unixのファイルパーミッションは3桁の8進数で表されます(
chmod 755は所有者が読み・書き・実行7、グループと他者が読み・実行5)。
組み込みシステム・電子回路
マイコンのレジスタ設定、GPIOピン構成、ハードウェアのデータシートは各ビットに意味があるため、16進数や2進数で記述されます。10進数では構造が見えにくくなります。
暗号・ハッシュ関数
SHA-256(256ビット)やMD5(128ビット)のハッシュ値は10進数では読めません。そのため16進数で表示されます。
注意点
- ゼロはすべての基数で同じです。
0₂も0₁₆も0₃₆も値は変わりません。 - 基数−1以下の1桁の数字は表記が変わりません。 8進数・10進数・16進数の
7はいずれも同じ7。ただし8は10進数と16進数では有効ですが、8進数では無効です(本ツールの入力検証エラーで検出されます)。 - 英字の大文字・小文字は区別しません。
FF・Ff・ffはすべて同じ16進数の255です。 - 負の数と小数は対象外です。 このツールは正の整数専用です。コンピュータにおける負の数の表現(2の補数など)は別のテーマです。
同じ数の異なる表記
FF を基数16から基数2に変換すると、結果は 11111111 になります。これは1バイト(8ビット)がすべて1の状態で、符号なし8ビット整数の最大値です。逆に 255 を基数10から基数16に変換すると FF に戻ります。いずれも同じ数を3通りの書き方で表したものです。