「エラーログに並ぶ FF 3A 2C って何?」「0b1010 や 0xFF を見て混乱したことはありませんか?そんなとき役立つのが進数変換です。コンピューターの世界では、2進数・8進数・10進数・16進数が場面に応じて使い分けられており、値を読み解いたり書き換えたりするには、進数同士を変換するスキルが必要になります。
この記事では、進数変換の基本(2進数・8進数・10進数・16進数の相互変換)を、具体例と手順つきで基礎から解説します。プログラミング初心者の方はもちろん、「なんとなく知っているけど人に説明できない」という方にもおすすめです。変換が面倒なときは、記事の後半で紹介する無料ツールが役立ちます。
進数とは?4種類の数の数え方
進数とは、数を表すときに使う「桁の繰り上がり方」のルールです。私たちが日常で使う10進数は、0〜9の10個の数字を使い、9の次で桁が繰り上がります。一方、コンピューター内部のデータはすべて2進数(0と1のみ)で処理されます。
2進数・8進数・10進数・16進数の比較
| 進数 | 使う数字 | 桁上がりの例 | 主な用途 |
|---|---|---|---|
| 2進数 | 0, 1 | 1 → 10 → 11 → 100 |
コンピューター内部、ビット演算 |
| 8進数 | 0〜7 | 7 → 10 → 11 → 12 |
UNIXのパーミッションなど |
| 10進数 | 0〜9 | 9 → 10 → 11 → 12 |
私たちが日常で使う数 |
| 16進数 | 0〜9, A〜F | F → 10 → 11 → 12 |
色コード、メモリ、MACアドレス |
16進数は0〜9に加えてA〜F(10〜15)の6文字を使います。例えば FF は10進数の255です。
豆知識:16進数は「hex(ヘックス)」、2進数は「binary(バイナリ)」と呼ばれます。プログラムのコードでは、2進数を 0b1010、16進数を 0xFF のように「0b」「0x」という接頭辞をつけて表すことが多いです。
進数変換の考え方:各桁の重みを理解する
進数変換のカギは、各桁に「重み」があるという考え方です。10進数の 123 は「1×100 + 2×10 + 3×1」ですが、これは「1×10² + 2×10¹ + 3×10⁰」と同じ意味です。つまり、右から数えてn番目の桁は「基数の(n−1)乗」の重みを持ちます。
このルールを応用すると、任意の進数を10進数に変換できます。2進数 1010 を例に見てみましょう。
| 桁の位置 | 2³ | 2² | 2¹ | 2⁰ |
|---|---|---|---|---|
| 重み(10進数) | 8 | 4 | 2 | 1 |
| 2進数の値 | 1 | 0 | 1 | 0 |
1×8 + 0×4 + 1×2 + 0×1 = 10
つまり、2進数の 1010 は10進数の 10 です。
10進数から2進数へ変換する手順
10進数を2進数に変換するには、2で割り続けて余りを並べる方法が基本です。例として10進数の 42 を変換してみます。
| 計算 | 商 | 余り |
|---|---|---|
| 42 ÷ 2 | 21 | 0 |
| 21 ÷ 2 | 10 | 1 |
| 10 ÷ 2 | 5 | 0 |
| 5 ÷ 2 | 2 | 1 |
| 2 ÷ 2 | 1 | 0 |
| 1 ÷ 2 | 0 | 1 |
余りを下から上へ読むと 101010。つまり、10進数の42は2進数で 101010 です。
桁区切りのコツ:2進数は4桁ごと、16進数は2桁ごとに区切ると読みやすくなります。例:101010 → 0010 1010。実はこの4桁のまとまりが16進数の1桁に対応しています。
2進数と16進数の変換は「4桁ずつ」がポイント
2進数と16進数の変換は、プログラミングで最も頻繁に登場します。しかも特別な計算は不要で、2進数を4桁ずつ区切って対応表に当てはめるだけです。2進数の4桁は16進数の1桁(0〜15)とちょうど一致するからです。
対応表
| 2進数(4桁) | 16進数 | 2進数(4桁) | 16進数 |
|---|---|---|---|
| 0000 | 0 | 1000 | 8 |
| 0001 | 1 | 1001 | 9 |
| 0010 | 2 | 1010 | A |
| 0011 | 3 | 1011 | B |
| 0100 | 4 | 1100 | C |
| 0101 | 5 | 1101 | D |
| 0110 | 6 | 1110 | E |
| 0111 | 7 | 1111 | F |
変換の例:101010 → 16進数
- 4桁ずつに区切る:
0010 1010(足りない桁は先頭に0を足す) - 対応表で置き換える:
0010→ 2、1010→ A - 結果:
2A
逆に16進数から2進数へは、各桁を4桁の2進数に置き換えるだけです。3F → 0011 1111 → 111111(先頭の0を省略)。
注意:2進数を10進数に変換するときに、桁を数え間違えるミスがよくあります。右端が2⁰(=1)であることを忘れずに。また16進数の A〜F は大文字・小文字どちらでも同じ値です。
進数変換が必要になる場面
進数変換は試験問題だけでなく、実務でも頻繁に登場します。
- プログラミングのデバッグ: メモリダンプやエラーログに並ぶ16進数の値を読み解く
- ビット演算: フラグ管理やマスク処理で、2進数の桁を意識する
- 色コードの確認:
#FF8800のようなカラーコードを、10進数のRGB値(255, 136, 0)に対応づける - ネットワーク・機器設定: MACアドレス(16進数)とIPアドレス(10進数)の対応確認
- UNIXのパーミッション:
chmod 755の7は2進数で111(読み書き実行すべて許可)
学習のコツ:いきなり全部を覚えようとせず、「0〜15の16進数」と「2の累乗(1, 2, 4, 8, 16, 32, 64, 128, 256)」をまず覚えましょう。この2つを押さえると、多くの変換が暗算でできるようになります。
進数変換ツールの使い方
手計算で覚えたら、実際の変換はツールに任せるのが効率的です。Tools Hubの進数変換ツールなら、2進数・8進数・10進数・16進数を、入力と同時にすべての基数へ自動変換できます。
数値を入力
変換したい数値(例:`101010`)と、その基数(例:2進数)を選択します。
他の基数の結果を確認
10進数・16進数などへの変換結果が自動で表示されます。
コピーして利用
必要な値をコピーして、コードやドキュメントにそのまま使えます。
この記事で紹介したツール
進数変換ツール
2進数・8進数・10進数・16進数を相互変換。巨大な整数も桁落ちなく正確に変換します。
まとめ
- 進数は「桁の繰り上がり方」のルール。2進数・8進数・10進数・16進数が使われる
- 10進数への変換は「各桁の重み(基数の累乗)」を掛けて足す
- 10進数から2進数へは「2で割り続けて余りを下から読む」
- 2進数と16進数の変換は「4桁ずつ区切って対応表に当てはめる」だけ
- 16進数のA〜Fは10〜15に対応。
FF= 255 - 手計算の確認にはTools Hubの進数変換ツールが便利
最初は戸惑う進数変換も、4桁対応表と2の累乗を覚えればぐっと身近になります。変換結果が合わないときは、ぜひツールで答え合わせをしてみてください。
よくある質問
2進数と16進数の変換はどうやるのが簡単ですか?
2進数を右から4桁ずつに区切り、それぞれを対応表で16進数の1桁に置き換えます。例えば 101010 は 0010 1010 に区切って 2A になります。逆は16進数の各桁を4桁の2進数にするだけです。
10進数を2進数に変換する方法は?
2で割り続けて余りを記録し、最後に余りを下から上へ並べます。例えば42は、余りが下から 101010 となり、2進数では 101010 です。
16進数のA〜Fは何を表していますか?
10〜15の数値を表します。A=10、B=11、C=12、D=13、E=14、F=15です。例えば FF は10進数の255になります。
小数を含む数値も進数変換できますか?
Tools Hubの進数変換ツールは整数のみに対応しています。小数点を含む入力はエラーになります。小数の変換が必要な場合は、小数点以下の桁を2(または16)倍していく方法で手計算できます。