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