ブログ一覧
math2026-07-105分

進数変換機

2進数、8進数、10進数、16進数などの数値進数を相互に変換するツール。コンピュータサイエンスにおける進数変換の基礎と歴史を解説します。


進数変換機


Matrix movie still

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進数に変換

  • 45 ÷ 2 = 22 余り 1

  • 22 ÷ 2 = 11 余り 0

  • 11 ÷ 2 = 5 余り 1

  • 5 ÷ 2 = 2 余り 1

  • 2 ÷ 2 = 1 余り 0

  • 1 ÷ 2 = 0 余り 1
  • 余数を下から読むと:101101

    #### 8進数への変換

    8進数への変換も同様に、8で割った余数を使用します。

    例: 45を8進数に変換

  • 45 ÷ 8 = 5 余り 5

  • 5 ÷ 8 = 0 余り 5
  • 答え:55

    #### 16進数への変換

    16進数への変換では、10以上の余数はA-Fの文字で表現されます。

    例: 45を16進数に変換

  • 45 ÷ 16 = 2 余り 13 (D)

  • 2 ÷ 16 = 0 余り 2
  • 答え: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進数データを人間が読みやすい形式で表示するためです。

    まとめ

    進数変換は、数学とコンピュータサイエンスが交差する架け橋のような概念です。各進数の特徴を把握し、変換の手法を身につければ、コンピュータが何をしているのかが一気に見えてきます。デジタル技術が社会の隅々に浸透した今、進数の知識は技術者だけの特権ではありません。基礎を押さえておけば、いつかきっと役に立つ——「備えあれば憂いなし」ですよ。