基数変換
基数とは、記数法の位取りの基本となる数のことで、2進法、10進法、16進法の基数はそれぞれ、2、10、16となる。つまり、N進法の基数はNとなる。
基数変換は、位取りを理解していれば試行錯誤することで可能であるが、値が大きくなるほど時間がかかるうえに間違いやすくなる。ここでは、機械的に変換を行う方法を記載する。
N進法から10進法への変換
10進法への変換は、ビットと記数法のページで記した方法と同じで、各桁毎に位取りを行って10進法に変換し、それらの和をとる。
Nを基数、nを桁数(小数の場合は、小数点以下1桁目から-1、-2…)とすると、整数部の位取りは1桁目から、
N0、N1、N2・・・Nn-1
となり、小数部では、小数点以下1桁目から、
N-1、N-2、N-3・・・Nn
となる。
10進法からN進法への変換
整数部
まず、10進法の50を2進法へ変換することを考えてみる。2進法は2倍になると桁が上がるという性質を利用して、10進法の数値を2で割っていき、余りを求める。
- 50 / 2 = 25…0
- 25 / 2 = 12…1
- 12 / 2 = 6…0
- 6 / 2 = 3…0
- 3 / 2 = 1…1
- 1 / 2 = 0…1
このように、商が0になるまで2で割っていき、下から順に余りの数字を並べていくと 110010 となり、2進法の表記となる。
(1×25)+(1×24)+(1×21)=32+16+2=50
この方法は2進法への変換以外にも適用できる。N進法はN倍、つまり基数倍になると桁が上がるので、商が0になるまで基数で割っていき、下から順に余りの数字を並べていけば良い。
小数部
10進法の0.6875を2進法へ変換することを考えてみる。2進法の小数の場合は小数点以下の桁が右側へと増えていく、つまり1/2になると桁が下がるので、10進法の数値を2倍していき、整数部の数値を求めていく。
- 0.6875 × 2 = 1.375(整数部1、小数部0.375)
- 0.375 × 2 = 0.75(整数部0、小数部0.75)
- 0.75× 2 = 1.5(整数部1、小数部0.5)
- 0.5 × 2 = 1.0(整数部1、小数部0)
上記のように、小数部が0になるまで2をかけていき、整数部を上から順に小数点以下に並べていくと 0.1011となり、2進法の表記となる。
(1×2-1)+(1×2-3)+(1×2-4)=1/2 + 1/8 + 1/16 = 11/16 = 0.6875
この方法は整数部と同様に2進法以外にも適用できる。10進法の数値を小数部が0になるまで基数をかけていき、整数部を上から順に小数点以下に並べていけば良い。
2進法と16進法の相互変換
16進法の1桁は、2進法では4桁で表すことができるので、16進法では1桁、2進法では4桁に分けて変換を行う。
2進法の 10110000111010 を4桁毎に分けると、10 1100 0011 1010 となり、これらを個別に16進法へと変換する。
- 10 → 2
- 1100 → C
- 0011 → 3
- 1010 → A
従って、2進法の 10110000111010 は、16進法では 2C3A となる。
16進法から2進法へは、逆の変換を行う。
- 2 → 0010 (10)
- C → 1100
- 3 → 0011
- A → 1010