Oracle Solaris Studio 12.2: C ユーザーガイド

F.2.3 極値表現

正規化された floatdouble の数は「隠された」ビットまたは暗黙のビットを持つと言われます。それにより、精度を 1 ビット分高めることができます。long double の場合は、先行ビットは暗黙的 (SPARC) または明示的 (x86) のいずれかになります。このビットは正規数に対しては 1、非正規数に対しては 0 になります。

表 F–10 float の表現

正規数 (0<e<255): 

(-1)s2 (e-127)1. f

非正規数 

(e=0, f!=0): 

(-1)s2 (-126)0. f

ゼロ (e=0, f=0): 

(-1)s0.0

シグナルを発生する NaN 

s=u, e=255(最大値); f=.0uuu~uu (少なくとも 1 ビットは 0 以外) 

シグナルを発生しない NaN 

s=u, e=255(最大値); f=.1uuu~uu 

無限大 

s=u, e=255(最大値); f=.0000~00 (すべてが 0) 

表 F–11 double の表現

正規数 (0<e<2047): 

(-1)s2 (e-1023)1. f

非正規数 (e=0, f!=0): 

(-1)s2 (-1022)0. f

ゼロ (e=0, f=0): 

(-1)s0.0

シグナルを発生する NaN 

s=u, e=2047(最大値); f=.0uuu~uu (少なくとも 1 ビットは 0 以外) 

シグナルを発生しない NaN 

s=u, e=2047(最大値); f=.1uuu~uu 

無限大 

s=u, e=2047(最大値); f=.0000~00 (すべてが 0) 

表 F–12 long double の表現

正規数 (0<e<32767): 

(-1)s2 (e- 16383)1.f

非正規数 (e=0, f!=0): 

(-1)s2 (-16382)0. f

ゼロ (e=0, f=0): 

(-1)s0.0

シグナルを発生する NaN 

s=u, e=32767(符号); f=.0uuu~uu (少なくとも 1 ビットは 0 以外) 

シグナルを発生しない NaN 

s=u, e=32767(最大値); f=.1uuu~uu 

無限大 

s=u, e=32767(最大値); f=.0000~00 (すべてが 0)