next up previous
: MIPS における浮動小数点形式 : 浮動小数点表現 : 浮動小数点表現

[問題] 浮動小数点表現

以上において、整数に対する四則演算のアルゴリズムを説明してきた。 しかし、コンピュータで扱う数値の形式は整数だけではなく、 小数もあり得る。

それらは浮動小数点形式の数値として実現されている。 浮動小数点形式の数値とは、10 進数では $-2.5 \times 10^{5}$ のような数である。$-$符号、2.5 の部分は仮数、5 の部分は 指数と呼ばれる。

実際にはコンピュータ上では数値は 2 進数で表現されるので、 浮動小数点形式の数値は以下の形をしている。

\begin{displaymath}
(+ \mbox{or} -) 1.xxxxx \times 2^{yyy}
\end{displaymath} (1)

なお、仮数は小数点の左のビットがただ一つの 1 となるように配置する。 このように、小数点の左に 0 が来ないようにした数を、正規化されている、 と言う。 (ただし、数値 ``0" は小数点の左に 1 がくることがないので特別扱いをする)

MIPS ではこの 32 ビットのレジスタを図 14 のように 配分している。 (なお、この形式は MIPS 専用のものではなく、IEEE 754 浮動小数点規格により 定められている)

図 14: IEEE 754 における浮動小数形式 (単精度) の数値の表現。
\begin{figure}\begin{center}\epsfxsize =7cm \epsfbox{float_reg.eps}\end{center}\end{figure}

この形式は単精度の浮動小数点形式と呼ばれる (C 言語での float)。 仮数は (1) 式の ``$xxxxx$" の部分のみを 2 進表現して 23 ビットに収める。

指数部は一般に正負の値をとりうる (10 進数なら $10^{3}$$10^{-3}$ とがあるように)。 指数は 2 の補数表現ではなく、図 15 のようなゲタばき表現が なされ、$-127 \sim 128$ の数値を表現している。

図 15: ゲタばき表現による指数部の表現
\begin{figure}\begin{center}
\begin{tabular}{c\vert r}
表現 & 実際の値\\
\hline...
...
0000 0001 & $-126$\\
0000 0000 & $-127$
\end{tabular}
\end{center}\end{figure}
すなわち、実際の指数に 127 のゲタ (bias) を履かせ、 その数値を 2 進表現するのである。

以上から、浮動小数表現された 32 ビットの数値が与えられた時、 その意味する数は以下のように計算できる。

\begin{displaymath}
(-1)^{S} \times (1 + 仮数) \times 2^{(指数 - ゲタ)}
\end{displaymath} (2)

ただし、$S$ は符号ビットである。

[問題]

  1. 10 進数の数値 $-0.75$ の IEEE 754 での 2 進表現 (単精度) で表せ。


平成16年12月13日