Ответ: есть еще вариант fValue = (shortValue & 0x8000)? -(float)(((0xFFFF^shortValue)&0x07FF)+1)/16.:(float)(shortValue&0x07FF)/16.; но от float'а все-же хочется отвязаться...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
SOIC
13 ноября 2003 г. 17:05
В ответ на:
можно проще: fValue = (float)shortValue/16; Достаточно умный компилятор заменит деление на вычитание порядка
отправлено Бендер++ 13 ноября 2003 г. 16:42
Составить ответ
|||
Конференция
|||
Архив
Ответы
Ответ: хм, не обратил внимания, если 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,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru