単精度実数
Single-precision real number

名古屋工業大学
先進セラミックス研究センター
井田 隆

名古屋工業大学 環境材料工学科 3 年次授業「マテリアルデザイン」の講義ノートです。

前へ 上へ 次へ


第1部 コンピュータの基礎
Fundamentals about Computer

第4章 数値計算
Numerical calculation

4−1 数の表現
Expression of numbers

4−1−2 単精度実数
Single-precision real number

コンピュータ内部での整数の表現のしかたは,使用する bitビット 数によって何種類かある以外には,ほとんど決まっています。 ところが,コンピュータ内部で実数をどのように表現するかには異なる規格があります。現在の主流は IEEE 規格(アイ・トリプル・イーきかく)となっています。なお,コンピュータを使って複素数の計算をすることもできるのですが,複素数をどのように表現するかについては,一般的な規格は今のところないと考えて良いでしょう。

1985 年くらいまでは 32 bit = 4 byte で一つの実数を表現するのが普通でした。4 byte で表現される実数のことを単精度実数と呼びます。 32 bit で表される単精度実数の各 bit がどのように割り当てられているかを以下の表に示します。 符号 signal,指数部 exponent,仮数部 fraction の3つの部分に割り当てられています。

bit 0 1 2 … 7 8 9 10 … 30 31
記号 s e1 e2e7 e8 f2 f3f23 f24
意味 符号 指数部 仮数部

指数部は 8 bit なので,0 から 255 の値を表す事ができるはずですが, 1 ≤ ( e1×27 + e2×26 + … + e8 ) ≤ 254 の範囲の値の場合には

x =
± ( 1 + f2 × 1 + f3 × 1 + … + f24 × 1 )
2 4 223
× 2 ( e1 × 27 + e2 × 26 + … + e8 − 127 )
(4,1.1)

という数を表す事とされています。この形式で表される数のことを正規化数 normalized number と呼びます。

指数部が, ( e1×27 + e2×26 + … + e8 ) = 0, つまり (e1e2e8) = (00…0) となる場合には

x =
± ( f2 × 1 + f3 × 1 + … + f24 × 1 )
2 4 223
× 2 − 126
(4,1.2)

という数を表すこととされています。この形式で表される数のことは非正規化数 denormalized number と呼ばれます。

指数部が, ( e1×27 + e2×26 + … + e8 ) = 255, つまり (e1e2e8) = (11…1) となる場合は特別扱いになっており,

s = 0, f2 f3 … f24 ) = (00…0) のとき x = +∞

s = 1, f2 f3 … f24 ) = (00…0) のとき x = −∞

f2 f3 … f24 ) ≠ (00…0) のとき x = NAN

とされます。ここで NAN は非数 (Not A Number) を表します。

正規化数では指数部(127 を差し引いた値)が −126 から 127 の値をとることができますから,正規化数の中で絶対値の最も小さい数は

±1 × 2−126 = ± 1.17549 × 10−38

絶対値の最も大きい数は

±
( 1 + 1 + 1 + … + 1 )
2 4 223
× 2 127
= ± 3.40282 × 10 38

となります。

非正規化数の中で絶対値の最も小さい数は

±
1
223
× 2 −126
= ± 1.40130 × 10 −45

となります。


前へ 上へ 次へ

2005年10月26日公開
2013年4月30日更新