Oracle® Solaris Studio 12.4: 数値計算ガイド

印刷ビューの終了

更新: 2015 年 1 月
 
 

2.2.2 単精度形式

IEEE 単精度形式は、23 ビットの小数部 f、8 ビットのバイアス付き指数 e、および 1 ビットの符号 s の 3 つのフィールドで構成されています。 これらのフィールドは、次の図に示すように、1 つの 32 ビットワードに連続して格納されます。ビット 0:22 には 23 ビットの小数部 f が含まれ (ビット 0 が小数部の最下位ビット、ビット 22 が最上位ビット)、ビット 23:30 には 8 ビットのバイアス付き指数 e が含まれ (ビット 23 がバイアス付き指数の最下位ビット、ビット 30 が最上位ビット)、最上位ビット 31 には符号ビット s が含まれています。

図 2-1  単精度格納形式

image:単精度格納形式でのビットの表現。

Table 2–2 は、一方にある 3 つの構成フィールド se、および f の値と、もう一方にある単精度形式のビットパターンによって表される値の間の対応関係を示しています。u は、示されているフィールドの値が、単精度形式の特定のビットパターンの値の決定には関係しないことを示しています。

表 2-2  IEEE 単精度形式のビットパターンによって表される値
単精度形式のビットパターン
0 < e < 255
(–1)s × 2e–127 × 1.f ( 正規数)
e = 0; f ≠ 0
(f 内の少なくとも 1 ビットは 0 以外)
(–1)s × 2126 × 0.f ( 非正規数)
e = 0; f = 0
(f 内のすべてのビットが 0)
(–1)s × 0.0 (符号付き 0)
s = 0; e = 255; f = 0 (f 内のすべてのビットが 0)
+INF (正の無限大)
s = 1; e = 255; f = 0 (f 内のすべてのビットが 0)
–INF (負の無限大)
s = u; e = 255; f ≠ 0
(f 内の少なくとも 1 ビットは 0 以外)
NaN (非数)

e < 255 の場合、単精度形式のビットパターンに割り当てられる値は、小数部の最上位ビットのすぐ左側に 2 進基数点を挿入し、2 進小数点のすぐ左側に暗黙ビットを挿入することによって形成されます。それにより、混在した数値 (整数と小数部。ここで、0 ≤ 小数部 < 1) が 2 進定位置表記で表されます。

このように形成された混在した数値は、単精度形式の仮数と呼ばれます。暗黙ビットにこの名前が付けられているのは、その値が単精度形式のビットパターンでは明示的に指定されておらず、バイアス付き指数フィールドの値によって暗に示されているためです。

単精度形式の場合、正規数と非正規数の違いは、正規数の仮数の先行ビット (2 進小数点の左側のビット) が 1 であるのに対して、非正規数の仮数の先行ビットは 0 である点です。単精度形式の非正規数は、IEEE 規格 754 では単精度形式の非正規化数という名前になりました。

23 ビットの小数部が暗黙的先行仮数ビットと組み合わされて、単精度形式の正規数の 24 ビットの精度が実現されます。

単精度格納形式での重要なビットパターンの例をTable 2–3 に示します。最大の正の正規数は、IEEE 単精度形式で表すことができる最大の有限数です。 最小の正の非正規数は、IEEE 単精度形式で表すことができる最小の正の数値です。最小の正の正規数は多くの場合、アンダーフローしきい値と呼ばれます。 (最大と最小の正規数および非正規数に対する 10 進数値は近似値であり、示されている桁数に関して正確です。)

表 2-3  単精度格納形式のビットパターンとその IEEE 値
共通名
ビットパターン (16 進数)
10 進数値
+0
00000000
0.0
–0
80000000
–0.0
1
3f800000
1.0
2
40000000
2.0
最大の正規数
7f7fffff
3.40282347e+38
最小の正の正規数
00800000
1.17549435e–38
最大の非正規数
007fffff
1.17549421e–38
最小の正の非正規数
00000001
1.40129846e–45
+∞
7f800000
無限大
–∞
ff800000
負の無限大
非数
7fc00000
NaN

NaN (非数) は、NaN の定義を満足させる多くのビットパターンのいずれかで表すことができます。Table 2–3 に示されている NaN の 16 進数値は、NaN を表すために使用できる多くのビットパターンの 1 つにすぎません。