基数変換

基数とは、記数法の位取りの基本となる数のことで、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で割っていき、余りを求める。

このように、商が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になるまで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進法へと変換する。

従って、2進法の 10110000111010 は、16進法では 2C3A となる。

16進法から2進法へは、逆の変換を行う。

コンピュータの基礎