実数の内部表現

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

一般に,実数型の変数は浮動小数点の形で表現される. すなわち,β進法を使った場合,実数は ±(0. f_1 f_2 f_3 ... f_m)_β β^± E という形で表されている. ここで, ±(0. f_1 f_2 f_3 ... f_m) = ± (f_1 β^-1 + f_2 β^-2 + f_3 β^-3 + ... f_m β^-m) は,仮数部でf_iは0からβ-1までの整数,f_1 ≠ 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           IEEE                       
                          FORTRAN                                  
                                                                   
  PC9801   MS-DOS         F77L(Lahey)   IEEE                       
                                                                   
  PC9801   MS-DOS         BASIC         その他*                    
                                                                   

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


Back to Main


Latex Source


地球流体電脳倶楽部 : 95/6/9 (Version 5.0)

NUMAGUTI Atusi <a1n@gfdl.gov>
Last Modified: Thu Aug 31 13:03:59 EDT 1995