Subsections
実際のコンピューターを用いた計算では,実数がよく使われる.ここでは,C言語の倍精
度実数型「
double」で変数を宣言したときの,データの格納の仕方を示す.諸君に
とってはかなり難しいと思うので,ここは分かる者のみトライせよ.講義では説明しない.
浮動小数点表示とは,指数化(例えば,
)して数値を表現する.
これは非常に便利な方法で,自然科学では多くつかわれる.コンピューターでも同様で,
データが整数と指定されない限りこの浮動小数点が用いられる.実際,この仮数部の
(-0.123)と指数の(-2)をメモリーに格納する.この方法の長所と短所は,以下の通りであ
る.
- 長所
- 決められたビット数内で,非常に小さな数値から大きな数値まで表現可能になる.
- 短所
- 桁落ち誤差が発生する場合がある.
浮動小数点表示を学習するために,必要な言葉の意味は,図
8の
通りである.1年生の数学の授業で学習したはず.
IEEEの規格のC言語の倍精度実数型の「
double」の表現について説明する.まず,浮動小数点
表示のための正規化を図
9に示す.当然,仮数部,指数部とも2進数表現です.仮数部は,符号と
1.XXXXのように表す.
つぎに,これをIEEE規格の浮動小数点に表すことを考える.まずその規格の仕様は,以下
のようになっている.
- 64ビット(第0ビット〜第63ビット)で,浮動小数を表わす.各ビットの構成は,図
10の通りである.
- 最上位の第63ビットが仮数部の符号ビットである.正の場合ゼロで,負の場合1に
なる.
- 指数は11ビットでオフセットバイナリ方式で表す.11ビットで0〜2047の値に
なる.ただし,指数部11ビットの値0と2047は例外処理のために予約されてい
る.11ビットで表現される値からオフセット値1023を引くことにより指数の値が
-1022〜1023の範囲になるように定められている.
- 仮数部は52ビットである.小数点以下を,絶対値で表現する.規格化のための整数
部は1と分かっているので,このためのビットは割り当てられていない.
図 10:
IEEE規格(C言語の倍精度実数)表現のビットの内訳
|
以上の仕様をもとに,図9で規格化された数を浮動小数点表示を
示す.ほとんどの部分は規格化で分かるが,指数のみ計算が必要である.指数は,オフセッ
トバイナリーで計算するために,まず10進数で表す.
|
(9) |
不動小数表示の指数は,この式の値に 1023 を加算して求める.すると,
|
(10) |
となる.
これで,すべて準備が整った.不動小数点表示は,図11のようにな
る.実際のコンピューターには,この64ビットのデータが格納される.メモリーは8ビッ
ト(1バイト)毎アドレスが割り当てられているので,8番地分のデータ領域が必要である.
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
2005-11-17