基数変換計算機とは?
基数変換計算機は、ある位取り記数法で表された数を別の記数法へ変換するツールです。たとえば2進数(基数2)から10進数(基数10)へ、あるいは10進数から16進数(基数16)へ、といった変換を行います。コンピュータはあらゆるデータを2進数で保持し、ネットワーク技術者は16進数を読み解き、古いシステムでは8進数が使われるため、これらの基数間の変換はプログラミング・電子工学・情報科学の授業などで日常的に登場する作業です。本ツールは2進数・8進数・10進数・16進数のあらゆる方向の変換に対応しています。
使い方
変換したい数を入力し、「変換元の基数」でその数が現在表している基数を選び、続いて「変換先の基数」で求めたい基数を選びます。16進数の桁にはA〜Fの英字を使います(大文字・小文字どちらでも構いません)。計算機は指定した変換先の基数での結果に加えて10進数での値も表示するので、計算の確認にいつでも役立ちます。
計算の仕組み
変換は2段階で行われます。まず入力された数を位取り(位の重み)を使って10進数として読み取ります。各桁にその位置に応じた基数のべき乗を掛けるのです。たとえば2進数の1010なら、\(1\times2^3 + 0\times2^2 + 1\times2^1 + 0\times2^0 = 8 + 0 + 2 + 0 = 10\) となります。次に、その10進数の値を繰り返し除算によって目的の基数へ変換します。新しい基数で割り続けて余りを集め、最後に得た余りから順に並べれば完成です。
$$\text{Decimal} = \sum_{i=0}^{k-1} d_i \cdot \text{From Base}^{\,i} \;\longrightarrow\; \text{Output in } \text{To Base}$$
$$\begin{gathered} \text{Decimal} = \sum_{i=0}^{k-1} d_i \cdot \text{From Base}^{\,i} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} d_i &= \text{digit } i \text{ of } \text{Number to Convert} \\ \text{Output} &= \text{Decimal converted to } \text{To Base} \end{aligned} \right. \end{gathered}$$
計算例
16進数のFFを10進数に変換してみましょう。位取りで計算すると \(F\times16^1 + F\times16^0 = 15\times16 + 15\times1 = 240 + 15 = 255\) となります。続いてこの255を2進数で表すと、2による繰り返し除算で11111111が得られます。これは8ビット(1バイト)で表せる最大値としておなじみの値です。
一般的な基数変換リファレンス表
この表は、4つの標準的な進法で頻繁に使用される値を列挙しています。10進法(基数10)は日常的な数え方です。2進法(基数2)、8進法(基数8)、16進法(基数16)はコンピュータで一般的です。2の各べき乗(16、32、64、128、256)が16進法でどのようにきれいな1桁の繰り上がりを生じ、2進法で正確なべき乗となるかに注目してください。
| 10進法(10) | 2進法(2) | 8進法(8) | 16進法(16) |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 10 | 2 | 2 |
| 3 | 11 | 3 | 3 |
| 4 | 100 | 4 | 4 |
| 5 | 101 | 5 | 5 |
| 6 | 110 | 6 | 6 |
| 7 | 111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 32 | 100000 | 40 | 20 |
| 64 | 1000000 | 100 | 40 |
| 128 | 10000000 | 200 | 80 |
| 255 | 11111111 | 377 | FF |
主要用語の説明
- 基数(radix)
- 数値体系が使用する異なる数字記号の個数。10進法は10個の記号(0~9)を使用し、2進法は2個(0~1)を使用します。基数は隣接する位置間の乗数も決定します。
- 位置記数法
- 数字の寄与がその位置に依存するシステム。各位置は基数の連続的なべき乗を表し、右から左へ増加します。
- 位取り
- 単一の数字による寄与の値。その数字に基数をその位置のべき乗で掛けたもの。例えば、8進法745の先頭の7は\(7\times 8^2 = 448\)の位取りを持ちます。
- 数字
- 数値内の単一の記号。有効な数字は0から(基数 − 1)まで。16進法は0~9を文字A~Fで拡張し、値10~15を表します。
- ニブル
- 4ビットのグループ。1つのニブルは1つの16進法数字(0~F)に正確にマップされます。これが2進法から16進法への変換がビットをニブルにグループ化して行われる理由です。
- バイト
- 8ビットのグループ(2つのニブル)。\(2^8 = 256\)の値(0~255、16進法では00~FF)を表現できます。
- 最上位数字(MSD)
- 数値の最も左の数字。最も高い位取りを持ちます。
- 最下位数字(LSD)
- 最も右の数字。最も低い位取り(基数の0乗、つまり1)を持ちます。
- 2進法(基数2)
- 数字0と1を使用。デジタル電子機器のネイティブ言語。各ビットはオン/オフ状態です。
- 8進法(基数8)
- 数字0~7を使用。各8進法数字は正確に3ビットに対応します。歴史的にコンピュータで一般的でしたが、ファイルパーミッションでも今なお使用されます。
- 10進法(基数10)
- 数字0~9を使用。日常的な人間の数え方と算術の標準的なシステム。
- 16進法(基数16)
- 数字0~9と文字A~Fを使用。各16進法数字が正確に4ビットに等しいため、2進法をコンパクトに表現します。メモリアドレスとカラーコードで広く使用されています。
よくある質問
16進数の英字は何を表しているの? 基数16では桁が 0〜9 まで進んだあと、\(A=10\)、\(B=11\)、\(C=12\)、\(D=13\)、\(E=14\)、\(F=15\) と続きます。
なぜ2進数は基数2なの? 2進数は0と1の2つの数字しか使いません。これはコンピュータ内部の電子スイッチのオン/オフの2状態にぴったり対応しているからです。
小数(分数)も変換できる? この計算機は整数(自然数)を対象としています。小数部分の基数変換には、基数を掛け続ける別の方法を使います。