計算機のなまり 2
実数の内部表現整数の内部表現は,ほとんどの機種で同一の表現となっているのに対して,実 数型変数に関してはいくつかの規格が存在します.
一般に,実数型の変数は浮動小数点の形で表現されます. すなわち,β進法を使った場合,実数は [ ±(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は指数部で,Eは0または正の整数です.
主要な実数表現として,IBM形式とIEEE(アイ・トリプル・イーと読む)形式と があります.どちらも,32ビットを1語とする点では同じですが,採用されて いる進法が異なり,表現できる実数の範囲や精度に違いがあります.
IBM形式は16進演算が基本になっていて,各ビットの使い方は以下の通りです.
{0.5mm |c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c| c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c| 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 & 26 & 27 & 28 & 29 & 30 & 31
± & E+64 & f_1 & f_2 & f_3 & f_4 & f_5 & f_6>
IEEE形式は2進法の浮動小数点形式で,IBM形式に比べて相対精度が高いという 特徴があります.各ビットの使い方は以下の通りです.
{0.5mm |c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c| c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c| 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 & 26 & 27 & 28 & 29 & 30 & 31
± & E+126 & f_2 f_4} & f_5 ... f_8} & f_9 ... f_12} & f_13 ... f_16} & f_17 ... f_20} & f_21 ... f_24}> このように,同じビット数で実数を表現しても,実数として表現できる範囲や 精度はシステムによって異なります.IBM形式で表される0でない実数は,絶対 値が5.397605 10^-79 〜 7.237005 10^75の範囲であ り,相対誤差は 6 10^-8 〜 10^-6 程度です. 一方, IEEE形 式では,絶対値が1.40129846 10^-45 〜 3.40282347 10^38 の範囲の実数が表現できて,相対誤差は 3 10^-8 〜 6 10^-8 程度です.
DCL では,このようなシステム依存の定数を MATH1/SYSLIB の GLRSET/GLRGET で管理しています.また,システムに依存する実数表現を解釈する道具が REALLIB です.
詳細は,MISC1 のマニュアル(dcl-x.x/doc/misc1/gaiyou/real.tex)を御覧下 さい.
Back to Main
Latex Source
地球流体電脳倶楽部 : 95/6/9 (Version 5.0)NUMAGUTI Atusi <a1n@gfdl.gov> Last Modified: Thu Aug 31 13:11:09 EDT 1995