正規化された float と double の数は「隠された」ビットまたは暗黙のビットを持つと言われます。それにより、精度を 1 ビット分高めることができます。long double の場合は、先行ビットは暗黙的 (SPARC) または明示的 (x86) のいずれかになります。このビットは正規数に対しては 1、非正規数に対しては 0 になります。
表 F–10 float の表現
正規数 (0<e<255): |
(-1)符号2 (指数部- 127)1.f |
非正規数 (e=0, f!=0): |
(-1)符号2 (-126)0.f |
ゼロ (e=0, f=0): |
(-1)符号n0.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)符号2 (指数部- 1023)1.f |
非正規数 (e=0, f!=0): |
(-1)符号2 (-1022)0.f |
ゼロ (e=0, f=0): |
(-1)符号0.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)符号2 (指数部 - 16383)1.f |
非正規数 (e=0, f!=0): |
(-1)符号2 (-16382)0.f |
ゼロ (e=0, f=0): |
(-1)符号0.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) |