基数変換とは


基数変換

基数法

まず、基数とは?
→「桁上りの基準の数」の事である。

10進数ならば、基数は10。

2進数ならば、基数は2。

その数を超えたら、桁が繰り上がる数の事を基数といいます。

では、基数法とは何か?
「基数」と「重み」と「値」を使用して表現する方法の事です。

「基数」→何進数の「何」(例えば2進数なら2)
「重み」→何桁目の数なのかを表す
「値」→その桁の数がどんな値なのかを表す

という事です。

例えば、10進数の「908.127」を基数法で表現してみましょう。

f:id:ideal_real:20170807234046p:plain

こんな感じになります。

要するに、以下を繰り返して表現する方法です。

f:id:ideal_real:20170811205743p:plain

基数変換の計算方法について

例えば、以下の値を基数法を利用して10進数で表現してみます。

f:id:ideal_real:20170811210415p:plain

つまりは、(14✕256)+(8✕16)+(12)= 3548+128+12

結果は「3688」となります。

10進数から「~進数」への変換(整数編)

(やること)
【元の数】を【表現したい進数】で割る。
割り算の結果を【表現したい進数】で割る。

これを繰り返す。

終了条件は「割り算の結果が0になった時」

(欲しい情報と整理方法)
割った数の「余り」が出る度に、右に詰めて格納する。

(例,1234を8進数に変換する。)

【一回目】
1234÷8= 154
1234÷8の余りは2

暫定結果→「2」

【二回目】

154÷8= 19
154÷8の余りは2

暫定結果→「22」

【三回目】

19÷8= 2
19÷8の余りは3

暫定結果→「322」

【四回目】

2÷8 = 0
2÷8の余りは2

割り算の結果が0になったので処理終了。

最終結果→「2322」となる。

10進数から「~進数」への変換(小数編)

(やること)
元の値✕表現したい進数。
掛け算の結果の整数部分を0にした値✕表現したい進数。

これを繰り返す。

終了条件は計算結果の小数部分が0になった時。

(欲しい情報と整理方法)

計算結果の整数部分を左に詰めて格納。

(例.(0.1)を3進数に変換する。)

【一回目】

0.1✕3= 0.3

暫定結果→0

【二回目】

0.3✕3 = 0.9

暫定結果→0.0

【三回目】

0.9✕3 = 2.7

暫定結果→0.02

【四回目】

0.7✕3= 2.1

暫定結果→0.022

【五回目】

0.1✕3= 0.3

暫定結果→0.0220

【六回目】

0.3✕3= 0.9

暫定結果→0.02200

【七回目】

0.9✕3= 2.7

暫定結果→0.022002

【八回目】

0.7✕3= 2.1

暫定結果→0.0220022

【ここまでで気づいたこと】

終了条件を満たさずに、永遠に計算を続けなくてはいけない事になる。

無限3進小数になるので、終了条件である小数部分が0という結果を得られないので、ここらで中断する。

結果としては、「0.0220022・・・・」となる