浮動小数点数はどのような形式でメモリ上に配置されているか
メモリの中身をのぞいてみる
code:sample.c
// gcc sample.c -o sample && ./sample
int main() {
union {
float f;
} u;
u.f = -118.625;
// 32bit浮動小数点数
printf("u.f = %f\n", u.f);
//=> -118.625000
// 16進数表現
printf("u.s = 0x%08X\n", (u.s3 << 24) + (u.s2 << 16) + (u.s1 << 8) + u.s0); //=> 0xC2ED4000
return 0;
}
実行する。
code:sh
$ gcc sample.c -o sample && ./sample
u.f = -118.625000
u.s = 0xc2ed4000
参考
浮動小数点型の数値はメモリ上でどのように格納されているのか
unionを使ってfloatの中をのぞく
構造体および共用体の初期化