ホーム ] PC技術/システム技術 ] VB.NETプログラミング ] なるほどナレッジ ] インフォメーション ]

上へ
多倍長語 MegaLong
基数変換
数値変換
定数システム
演算時間予測システム

技術解説(システム編)

基数変換

最終更新日:2006/11/29 新規

●概要

 基数変換について、その方法の一例を紹介する。

●数値とは?

 数値は、以下のように定義できる。R進数で、

   V = ai・Ri   (i = 0 to N -1)

である。係数 a を並べて、(aN-1aN-2・・・・a1a0)R と略記すれば、その数値の表現となる。日常的な10進では、()10 をも省略して、125 などと表示する。

●基数変換とは、

 n 進数 を m 進数にすることである。一般に値が整数であれば成立する。数値は抽象概念であるから、何進数で表現しようが、同じ値を持っている。人間は、多分、頭に浮かぶのは10進としての数値である。

●変換方法

 幾つかあると聞くが、一番分りよい一例を示す。

 ある任意の値 V があるとして、これを R 進数で表現したい。今。R進数とできた場合、上の定義式を、展開すると、

 V = aN-1・RN-1 + ・・・・ + a2・R2  + a1・R + a0

 求めるものは、係数列 ai となる。

 今、V を R で、整数除算すれば、

 V \ R = aN-1・RN-2 + ・・・・ + a2・R1  + a1 ・・・ a0    (・・・ は、余りを表す)

となる。この余りは、初めの係数となる。次に、商を再び R で整数除算すれば、今度は、a1 が求まる。

 V が一般の数値であっても多倍長であっても理屈は同じである。

  整数除算関数 IntDiv(Dv, D, Q, Rm)  Dv:被除数、D:除数、Q:整数商、Rm:剰余 があれば、以下のようになる。

A()  求める係数列
i = 0
Dv = V
D = R
Do
  IntDiv(Dv, D, Q, Rm)
  Redim Preserve A(i)
  A(i) = Rm
  i = i + 1
  If Q = 0 Then Exit Do
  Dv = Q
Loop