正規化された float と double の数は「隠された」ビットまたは暗黙のビットを持つと言われます。それにより、精度を 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) |