Задать вопрос
@r1ch

Преобразование типов в си?

int i = 37; // 00000000000000000000000000100101 = 0.00000000.00000000000000000100101 = ((-1)^0)*1,00000000000000000100101*2^-127 = 1,00000000000000000100101*(1/1,701419339096245668434929897641e+38) = 0,000000
float f = *(float*)&i; // 0,000000

int i = -37; // 11111111111111111111111111011010 = 1.11111111.11111111111111111011010 = ((-1)^1)*1,1111111111111111111111111011010*2^255-127= -1,999999982304871082305908203125*3,4028236692093846346337460743177e+38 = -6,8056472782053657584265955775406e+38 
float f = *(float*)&i; // -1.#QNAN0 

float f = 7.0; // 0.10000001.11000000000000000000000 = 1088421888
int i = *(int*)&f; // 1088421888

float f = -7.0; // 1.01111110.00111111111111111111111 = -1059061760
int i = *(int*)&f; // -1059061760


Код на СИ. По какому алгоритму этот код получает из int => float, float=> int, как преобразуется мантисса и порядок в целое число?
  • Вопрос задан
  • 7298 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя Ilya Evseev К ответам на вопрос (3)
IlyaEvseev
@IlyaEvseev
Opensource geek
Если sizeof(int) != sizeof(float), можно заработать на свою жопу очень интересный геморрой.

Хуже всего, что такой код реально приходилось встречать в production(!!!) в коммерческих кодеках.
Ответ написан
Комментировать