浮動小数点

float.png

floatの場合

float.png
16進数で表現すると0x3E200000

float の表す値 = (-1)符号部 × 2指数部-127 × 1.仮数部

表すことのできる範囲

1.175494 10-38 < float の絶対値 < 3.402823 10+38

仮数部で表現できる範囲は、23ビットだから
23個すべて1で埋まった数を16進数で表現すると0x7fffff(7=0x0111とfが5個)
これは10進数にすると8388607である。
あーら、たったの7桁じゃない!

数でない数

16進数 %f
0x60000000 2681563534106135500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000

doubleの場合

double.png

浮動少数のprintf

f
浮動小数点
a,A
浮動小数点を16進数で表現する。 ただし意味不明なものが羅列された。

floatのビットの様子を知るには?

#include <bitset>
union FloatInt
{
    float f;
    int i;
};
union FloatInt fi;
fi.f=0.15625;
bitset<32> bits(fi.i);
cout<<bits<<endl;

union

サポートサイト Wikidot.com