円周率.jp > 多倍長計算 > 多倍長数格納方法

多倍長数格納方法

この格納方法をどのようにするかによって各演算の詳細に違いが出てくるため,演算を実装する前に決める必要がある.

以下の例示では,多倍長数の各桁を表す数列 a[] と基底 B を用いるが,プログラムの変数のまま表現するとオーバーフローなどで混乱が起きるかもしれないので表現形式を変更する.

a[i](プログラム的) → ai(ここでの表現)     (for 0≦in)
B(プログラム的) → B(ここでの表現)

で多倍長数の表現の仕方を例示する.

多倍長整数

いろいろな点で選択肢があるので,それぞれその選択肢を表す.

表1.多倍長整数の表現パターン
選択肢1 選択肢2 選択肢3
桁の配置 an-1Bn-1an-2Bn-2 + … + a1Ba0 a0Bn-1a1Bn-2 + … + an-2Ban-1
各桁の表現範囲 0 ≦ aiB -B/2 ≦ aiB/2 (※)
負の数の表現
((※)では不要)
a最上位<0 で表現 符号変数を持つ n=-n

多倍長浮動小数

基本的には多倍長整数に加えて,指数を表す変数 e を持てばよい. ただ,その際に仮数部の小数点をどこに置くか,という程度の選択肢がある.

(-1)s×( a0Bn-1a1Bn-2 + … + an-2Ban-1 ) × Be