можно проще: fValue = (float)shortValue/16; Достаточно умный компилятор заменит деление на вычитание порядка
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
Бендер++
13 ноября 2003 г. 16:42
В ответ на:
По поводу fixed point(7.4) в float...(+)
отправлено SOIC 13 ноября 2003 г. 16:27
Составить ответ
|||
Конференция
|||
Архив
Ответы
Ответ: есть еще вариант fValue = (shortValue & 0x8000)? -(float)(((0xFFFF^shortValue)&0x07FF)+1)/16.:(float)(shortValue&0x07FF)/16.; но от float'а все-же хочется отвязаться...
—
SOIC
(13.11.2003 17:05,
пустое
)
Ответ: хм, не обратил внимания, если shortValue типа signed short, то упращение упрощается: fValue = (float)shortValue/16.; остается только перевести знаковое 16bit целое в float есть идеи как это сделать?
—
SOIC
(13.11.2003 17:13,
пустое
)
тогда можно сделать примерно следующее:
—
Бендер++
(13.11.2003 17:28, 468 байт)
Поправка: pseudofloat = ((long)(shortValue & 0x7fff)<<8)|((long)pow<<23)|((long)sign<<24)
—
Бендер++
(13.11.2003 18:32,
пустое
)
Ответ: а если компилятор не умный, и с float'ом связываться не хочется?
—
SOIC
(13.11.2003 16:54,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru