進数変換機
2進数、8進数、10進数、16進数などの数値進数を相互に変換するツール。コンピュータサイエンスにおける進数変換の基礎と歴史を解説します。
進数変換機
Photo by Markus Spiske on Unsplash
進数変換とは
進数変換とは、異なる基数(radix)を持つ数値表現を相互に変換すること。コンピュータの世界では10進数だけではたりない。2進数(バイナリ)、8進数(オクタル)、10進数(デシマル)、16進数(ヘキサデシマル)——これらが日常使いされる代表格です。
各進数にはそれぞれの用途と利点があり、2進数はコンピュータのハードウェアにおける基本表現、16進数は2進数の簡略化表現として広く使用されています。この記事では、これらの進数間の変換方法と、その数学的基礎について解説します。
知人の山本さんはWebエンジニアですが、入社当初はIPアドレスのサブネットマスクを2進数で考えるのが苦手だったようです。ある日、「なぜ192.168.1.0/24の'24'がsubnet maskの24ビットを表すのか、やっとわかった」と嬉しそうに話してくれました。進数変換を理解することは、ネットワークの基礎を把握する上で欠かせないスキルなのです。
進数の基本概念
基数と位置表記
任意の基数 $b$ における数値表現は、以下の位置表記法で表されます。
$$N = d_n \times b^n + d_{n-1} \times b^{n-1} + \cdots + d_1 \times b^1 + d_0 \times b^0$$
ここで、$d_i$ は各桁の数字($0 \leq d_i < b$)です。
各進数の桁数字
| 進数 | 基数 | 使用される桁数字 |
|:---:|:---:|:---|
| 2進数 | 2 | 0, 1 |
| 8進数 | 8 | 0, 1, 2, 3, 4, 5, 6, 7 |
| 10進数 | 10 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 |
| 16進数 | 16 | 0-9, A-F |
変換方法
10進数から他の進数へ
#### 2進数への変換
10進数を2進数に変換するには、2で割った余数を下から順に並べます。
例: 45を2進数に変換
余数を下から読むと:101101
#### 8進数への変換
8進数への変換も同様に、8で割った余数を使用します。
例: 45を8進数に変換
答え:55
#### 16進数への変換
16進数への変換では、10以上の余数はA-Fの文字で表現されます。
例: 45を16進数に変換
答え:2D
他の進数から10進数へ
各桁の数字に、基数の冪乗を掛けて合計します。
例: 101101 (2進数) を10進数に
$$1 \times 2^5 + 0 \times 2^4 + 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0$$
$$= 32 + 0 + 8 + 4 + 0 + 1 = 45$$
例: 2D (16進数) を10進数に
$$2 \times 16^1 + 13 \times 16^0 = 32 + 13 = 45$$
変換の数学的基礎
剰余定理の応用
進数変換は、数学の剰余定理の直接的な応用です。基数 $b$ で連続して割っていった場合の剰余の列が、新しい進数表現を構成します。
各進数間の直接変換
2進数と8進数、2進数と16進数の間には、直接変換が可能という興味深い関係があります。
#### 2進数から8進数へ
2進数を3桁ずつ区切り、各グループを8進数に変換します。
例: 101101 → 101 101
- 101 = 5
- 101 = 5
答え:55
#### 2進数から16進数へ
2進数を4桁ずつ区切り、各グループを16進数に変換します。
例: 00101101 → 0010 1101
- 0010 = 2
- 1101 = D (13)
答え:2D
実用的アプリケーション
コンピュータサイエンス
進数変換は、コンピュータサイエンスの多くの分野で活用されています。
- プログラミング: メモリアドレスやビット演算の表現
- ネットワーキング: IPアドレス(2進数→10進数変換)
- 暗号学: ハッシュ値や暗号文の16進数表現
デジタル回路設計
デジタル回路において、2進数は論理ゲートの状態を直接表現し、8進数や16進数は回路の設計や検証に使用されます。
ファイルフォーマット
バイナリファイルの内容を確認する際、16進数エディタが広く使用されます。これは、2進数データを人間が読みやすい形式で表示するためです。
まとめ
進数変換は、数学とコンピュータサイエンスが交差する架け橋のような概念です。各進数の特徴を把握し、変換の手法を身につければ、コンピュータが何をしているのかが一気に見えてきます。デジタル技術が社会の隅々に浸透した今、進数の知識は技術者だけの特権ではありません。基礎を押さえておけば、いつかきっと役に立つ——「備えあれば憂いなし」ですよ。