数字の表現には、さまざまな「進数」(しんすう)システムが存在します。最も広く使われているのは10進数、すなわち私たちが普段使用している数字システムです。しかし、コンピュータ科学では、2進数、8進数、16進数など、他の進数システムも頻繁に使用されます。この記事では、異なる進数システム間の変換方法について、完全かつ包括的に説明します。
1. 進数とは?
進数とは、数値を表現するための基準となる数字の集まりです。一般的に使われている進数には以下のようなものがあります。

-
2進数(バイナリ): 基数2を用いる。数字は「0」と「1」のみ。
-
10進数(デシマル): 基数10を用いる。数字は「0」から「9」まで。
-
8進数(オクタル): 基数8を用いる。数字は「0」から「7」まで。
-
16進数(ヘキサデシマル): 基数16を用いる。数字は「0」から「9」と「A」から「F」まで。
2. 進数の変換
進数間で数値を変換する方法は主に二つあります:直接的な計算と、段階的な変換方法です。それぞれの方法について詳しく見ていきましょう。
2.1. 10進数から他の進数への変換
10進数の数値を別の進数に変換するには、以下の手順を実行します。
-
2進数(バイナリ)への変換:
10進数の数を2で割り、その商を繰り返し2で割りながら、余りを下から順に並べます。この余りが2進数の各桁に対応します。例:10進数の「13」を2進数に変換する場合
-
13 ÷ 2 = 商6、余り1
-
6 ÷ 2 = 商3、余り0
-
3 ÷ 2 = 商1、余り1
-
1 ÷ 2 = 商0、余り1
余りを下から順に並べると、「1101」となります。したがって、13(10進数)は1101(2進数)です。
-
-
8進数(オクタル)への変換:
10進数を8で割り、余りを下から順に並べます。例:10進数の「13」を8進数に変換する場合
-
13 ÷ 8 = 商1、余り5
-
1 ÷ 8 = 商0、余り1
余りを下から順に並べると、「15」となります。したがって、13(10進数)は15(8進数)です。
-
-
16進数(ヘキサデシマル)への変換:
10進数を16で割り、余りを16進数に対応する文字(0-9およびA-F)で表します。例:10進数の「13」を16進数に変換する場合
-
13 ÷ 16 = 商0、余り13
-
余り13は16進数で「D」
したがって、13(10進数)はD(16進数)です。
-
2.2. 他の進数から10進数への変換
他の進数から10進数に変換するには、各桁をその進数の基数の累乗に掛け算して加算します。
-
2進数から10進数への変換:
例えば、2進数「1101」を10進数に変換する場合、次のように計算します。1×23+1×22+0×21+1×20=8+4+0+1=13
よって、1101(2進数)は13(10進数)です。
-
8進数から10進数への変換:
例えば、8進数「15」を10進数に変換する場合、次のように計算します。1×81+5×80=8+5=13
よって、15(8進数)は13(10進数)です。
-
16進数から10進数への変換:
例えば、16進数「D」を10進数に変換する場合、次のように計算します。D=13(10進数)
よって、D(16進数)は13(10進数)です。
2.3. 他の進数間の変換
ある進数から他の進数に直接変換する場合は、まずその進数から10進数に変換し、次に10進数から目的の進数に変換する方法を取ります。
例:2進数「1101」を8進数に変換する場合
-
2進数「1101」を10進数に変換すると、13(10進数)です。
-
次に、13(10進数)を8進数に変換すると、「15」になります。
したがって、1101(2進数)は15(8進数)です。
3. 進数変換の応用
進数の変換は、コンピュータ科学や情報技術において重要な役割を果たしています。特に、コンピュータ内部では2進数が使用されており、プログラムやハードウェア設計、データ通信などで進数の変換が必要となる場面が多いです。
また、16進数はバイナリデータを簡潔に表現するために使われることが多いです。例えば、コンピュータのメモリやファイルの内容を表示するときに16進数を使用することがあります。これは、2進数を直接扱うよりも視覚的に理解しやすいためです。
4. まとめ
進数間の変換は、数学的な手法に基づいて簡単に行うことができます。特にコンピュータの世界では、異なる進数を自由に変換できることが重要です。基本的な変換方法を理解することで、進数に関する知識を深め、さまざまな技術的な問題にも対応できるようになります。