тогда можно сделать примерно следующее:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Бендер++ 13 ноября 2003 г. 17:28
В ответ на: Ответ: хм, не обратил внимания, если shortValue типа signed short, то упращение упрощается: fValue = (float)shortValue/16.; остается только перевести знаковое 16bit целое в float есть идеи как это сделать? отправлено SOIC 13 ноября 2003 г. 17:13

1) if (shortValue < 0)
{
shortValue = -shortValue;
char sign = 0x80;
} else sign = 0;
2) for (pow=(127-16);!(shortValue&0x8000);shortValue <<=1,pow--)//нормализация
3) long pseudofloat = (shortValue & 0x7fff)|(pow<<23)|(sign<<24)

pseudofloat соответствует теперь float, по внутреннему представлению, т.е. к нему можно обратиться по указателю как к float

float *ptr = (float*)&pseudofloat;

float something = *ptr; - это уже настоящий float


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru