
23.09.2007, 21:27
|
|
Участник форума
Регистрация: 24.07.2007
Сообщений: 138
С нами:
9894190
Репутация:
215
|
|
Недавно как раз такую писал. Т.к. флоат занимает 32 бита, аргумент x в действительности является флоатом, просто по условию поставленной передо мной задачи этот тип использовать было вообще нельзя..
Код:
__int32 IntFormFloat(DWORD x) {
CHAR poryadok = ((x >> 23) & 0xFF) - 127;
if (poryadok < 0)
return 0;
// Выталкиваем мантиссу и пририсовываем сэкономленную
// нормализацией единицу
__int32 mantissa = (x & 0x7FFFFF) | 0x800000;
mantissa >>= (23 - poryadok);
if (x >> 31)
mantissa *= -1;
return mantissa;
}
|
|
|