本記事では、基本情報技術者試験などでおなじみの「10進数からn進数への基数変換」の筆算に関して、あの計算で基数変換が行える理由を数式を用いて整理してみました。
なお、基数変換そのものや具体的な筆算の方法については、以下の記事などをご参照ください。
medium-company.com
整数部分の筆算について
まずは、小数部分が0かつ整数部分が()桁となる10進数について考えます。
() を を満たす整数とすると、以下の関係が成立します。
- …①
ここで、をで割ったときの商を、余りをとすると、 となるので、等式①の両辺をで割ると、
- …②
等式②の両辺の末項が小数部分を表すことから、 と求められます。
また、等式②は以下になります。
- …③
次に、をで割ったときの商を、余りをとし、等式③の両辺をで割ると、
先ほどと同様にして、 と求められます。
同様の計算を繰り返すと、が最終的に0となり、、…、、 が順次求められます。
これは、基数変換を筆算で行うときの計算内容と一致します。
処理1. 10進数の整数部を「」で割っていく
処理2. 商が「0」になるまで処理1を繰り返す
処理3. 処理1~2で求めた、割り算の余りを下から読むと進数になる
小数部分の筆算について
次に、整数部分が0かつ小数部分が桁となる10進数について考えます(が定まらない無限小数のときも考え方は同じです)。
() を を満たす整数とすると、以下の関係が成立します。
- …④
ここで、等式④の両辺にを掛けると、
- …⑤
となります。
(1) のとき
等式⑤より、
- …⑥
のときは不等式⑥が成立しないことから、と求められます。
また、等式⑤は
- …⑦
となります。
(2) のとき
等式⑤の両辺の初項が整数部分を表すことから、 (はの整数部分)と求められます。
また、等式⑤は
- …⑧
となります。
はの小数部分と一致します。
なお、のときとなることから、等式⑧は等式⑦を内包していることが分かります。
次に、等式⑨の両辺にを掛けると、
先ほどと同様にして、 と求められます。
同様の計算を繰り返すと、直前に求めた等式の両辺にを掛けたときの左辺の値が最終的に0となり(※有限小数と仮定しているため)、、…、、 が順次求められます。
これは、基数変換を筆算で行うときの計算内容と一致します。
処理1. 小数部分に「」を掛ける
処理2. 処理1の計算結果に対して、また「」を掛ける ※小数部分が「0」のときは終了
処理3. 小数部分が「0」になるまで処理2を繰り返す
処理3. 処理1~3で求めた計算結果の、小数点より前の数値を上から並べると進数になる