浮動小数点数はどのような形式でメモリ上に配置されているか
10進数をIEEE 754 binary32で表現してみる のつづき。
メモリの中身をのぞいてみる
code:sample.c
// gcc sample.c -o sample && ./sample
#include <stdio.h>
int main() {
union {
float f;
unsigned char s4;
} 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の中をのぞく
https://qiita.com/nia_tn1012/items/340a1f0ad71bf6085f7f
構造体および共用体の初期化
https://www.ibm.com/docs/ja/xl-c-aix/13.1.0?topic=initializers-initialization-structures-unions