1.3 実数の内部表現

整数の内部表現に関しては, ほとんどの機種で同一の表現となっているのに対して, 実数型に関してはいくつかの規格が存在する. このように実数表現形式の異なる計算機同志でデータを交換するための ユーティリティーが REALLIB である.

一般に, 実数型の変数は浮動小数点の形で表現される. すなわち, β進法を使った場合, 実数は

±(0.f1f2f3・・・fm)β×β±E (1)

という形で表されている. ここで,

±(0.f1f2f3・・・fm) = ±(f1×β-1 + f2×β-2 +f3×β-3 +・・・fm×β-m) (2)

は, 仮数部でfi は0からβ-1までの整数, f1 0 である. また, Eは指数部で0または正の整数である.

ほとんどのメインフレーム系の計算機で使用されている実数表現は IBM形式と呼ばれるものである. これに対して, UNIXなどのコンパイラでは IEEE(アイ・トリプル・イーと読む)規格を採用しているものが多い. どちらも, 32ビットを1語とする点は同じであるが, 採用されている進法が異なり, 表現できる実数の範囲や精度に違いがある.

このように, 同じビット数で実数を表現しても, 実数として表現できる範囲や精度はシステムによって異なる. 電脳ライブラリでは, このようなシステム依存の定数を MATH1/SYSLIB の glpset/glpget で管理している.

我々の身の回りにあるコンピュータで採用されている 表現方法を以下の表に示す.

計算機 OS コンパイラ 浮動小数点表現方法 備考
FACOM MSP(汎用) FORT77EX IBM  
FACOM XMP(UNIX) FORT77EX IBM  
HITAC VOS3(汎用) ?? IBM  
HITAC HIUXM(UNIX) f77 IBM  
SUN UNIX SUN FORTRAN IEEE  
PC9801 MS-DOS F77L(Lahey) IEEE  
PC9801 MS-DOS BASIC その他*  

注(*): 2進表現でIEEEに近いが, 符号ビットの位置や指数部のゲタの値などが異なる.