取った
int x = 5;
float y = x;
//"I know it's a float .. you know it's a float .. but take it's address
// and pretend you're looking at an integer and then dereference it"
printf("%d\n", *(int*)&y); //1084227584
なぜこの番号が表示されるのですか?
- バイナリの5は
0101
- 5は、と考えることができます
(1.25 * 2^2)
。つまり、
次のように表すことができます:
[sign bit] - 0
[8 bits worth of exp] - 129 (129-127=2) - 1000|0001
[23 bits of .xxxxxxx] - 25 - 1100|1
まとめると、私は
[sign bit][8 bits worth of exp][23 bits worth of .xxx]
0 10000001 11001000000000 //2126336
何が足りないのですか?