C ユーザーズガイド

極値表現

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

表 A-10 float の表現
 正規数 (0<e<255):

(-1)Sign2(exponent - 127)1.f

非正規数 (e=0, f!=0):(-1)Sign2(-126)0.f
ゼロ (e=0, f=0):(-1)Sign0.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) 

表 A-11 double の表現
正規数 (0<e<2047):

(-1)Sign2(exponent - 1023)1.f

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

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

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

(-1)Sign0.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) 

表 A-12 long double の表現
 正規数 (0<e<32767):

(-1)Sign2(exponent - 16383)1.f

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

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

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

(-1)Sign0.0

シグナルを発生する NaN 

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

シグナルを発生しない NaN 

s=u, e=32767(最大値); f=1.1uuu〜uu 

 無限大

s=u, e=32767(最大値); f=1.0000〜00 (すべてが 0)