ВозьмитеInteger, как поплавок, разъяснение необходимости
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
Что я пропущу, пожалуйста?
Плавающее представление точек может варьироваться в зависимости от вашей архитектуры и окружающей среды. Какова ваша среда выполнения для этого кода? – cytinus
hmm .. работает на 64-битном маке – JAM