ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
808773 Топик полностью
fk0, легенда (11.01.2018 13:10, просмотров: 74) ответил Peter_M на Как проще отобразить одно множество чисел в другое? (задача масштабирования)
В общем случае все такие задачи решаются как Y = (X*(unsigned long)N + 32768) >> 16 = (X*(unsigned long)N+32768)/65536. Осталось вычислить N = round(5.55555 * 65536) = round(364088.885) = 364089. Проверяем: (9*364089+32768)/65536 = 50.5 (0.5 откидывается, в целых числах же считаем). Умножение, обращаю внимание, в длинных (long) целых. Потому, что младшие 16 бит отводятся под часть которая после запятой.
[ZX]