Subsections

6 付録

6.1 実数の表現

実際のコンピューターを用いた計算では,実数がよく使われる.ここでは,C言語の倍精 度実数型「double」で変数を宣言したときの,データの格納の仕方を示す.諸君に とってはかなり難しいと思うので,ここは分かる者のみトライせよ.講義では説明しない.

6.1.1 浮動小数点表示

浮動小数点表示とは,指数化(例えば, $ -0.123\times 10^{-2}$ )して数値を表現する. これは非常に便利な方法で,自然科学では多くつかわれる.コンピューターでも同様で, データが整数と指定されない限りこの浮動小数点が用いられる.実際,この仮数部の (-0.123)と指数の(-2)をメモリーに格納する.この方法の長所と短所は,以下の通りであ る.
長所
決められたビット数内で,非常に小さな数値から大きな数値まで表現可能になる.
短所
桁落ち誤差が発生する場合がある.
浮動小数点表示を学習するために,必要な言葉の意味は,図8の 通りである.1年生の数学の授業で学習したはず.
図 8: 指数表現の名称
\includegraphics[keepaspectratio, scale=1.0]{figure/floating_point.eps}

6.1.2 C言語の倍精度実数型

IEEEの規格のC言語の倍精度実数型の「double」の表現について説明する.まず,浮動小数点 表示のための正規化を図9に示す.当然,仮数部,指数部とも2進数表現です.仮数部は,符号と1.XXXXのように表す.
図 9: IEEE規格表現のための規格化
\includegraphics[keepaspectratio, scale=1.0]{figure/IEEE_normalize.eps}

つぎに,これをIEEE規格の浮動小数点に表すことを考える.まずその規格の仕様は,以下 のようになっている.

図 10: IEEE規格(C言語の倍精度実数)表現のビットの内訳
\includegraphics[keepaspectratio, scale=1.0]{figure/IEEE_bit_spec.eps}

以上の仕様をもとに,図9で規格化された数を浮動小数点表示を 示す.ほとんどの部分は規格化で分かるが,指数のみ計算が必要である.指数は,オフセッ トバイナリーで計算するために,まず10進数で表す.

$\displaystyle (-1011)_2=(-8-2-1)_{10}=(-11)_{10}$ (9)

不動小数表示の指数は,この式の値に 1023 を加算して求める.すると,

$\displaystyle (-11+1023)_{10}=(1012)_{10}=(1111110100)_2$ (10)

となる.

これで,すべて準備が整った.不動小数点表示は,図11のようにな る.実際のコンピューターには,この64ビットのデータが格納される.メモリーは8ビッ ト(1バイト)毎アドレスが割り当てられているので,8番地分のデータ領域が必要である.

図 11: IEEE規格の浮動小数点表示の例
\includegraphics[keepaspectratio, scale=0.5]{figure/IEEE_example.eps}

ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
2005-11-17


no counter