Помогите убогому - как поделить по-быстрому 16 разрядное число без знака на 200 пользуясь сдвигами и сложениями-вычитаниями?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
VVT
03 февраля 2003 г. 16:32
Составить ответ
|||
Конференция
|||
Архив
Ответы
1/200 = 1/256 + 1/1024 + .......
—
dfg
(03.02.2003 16:42,
пустое
)
А точнее: 1/200 = 1/256 + 1/1024 + 1/8192 при ошибке 1/204800
—
dfg
(03.02.2003 17:02,
пустое
)
Погрешность результата составляет от -2 до +1 при суммировании целой части после сдвигов.
—
Oldring
(03.02.2003 17:24,
пустое
)
А никто не требует ограничиваться 16 битами, промежуточные вычисления выполняются с большей точностью.
—
dfg
(03.02.2003 18:52,
пустое
)
Считаем абсолютно точно (благо, все является степенями двойки), и округляем отбрасыванием точной части? Тогда для 1199/200 получаем 6 вместо 5.
—
Oldring
(04.02.2003 13:10,
пустое
)
Корректное округление предполагается само собой.
—
dfg
(04.02.2003 13:26,
пустое
)
А "корректное округление" - это как?
—
Oldring
(04.02.2003 13:39,
пустое
)
Я знаю следующий точный алгоритм через умножения. А как Вы рассчитываете получить точный результат - мне очень интересно.
—
Oldring
(04.02.2003 14:03, 237 байт)
Если я не запутался в нулях, то это вот так:
—
dfg
(05.02.2003 15:54, 198 байт)
Спасибо за уточнение, что-то я, видимо, не так делал - замучился подбирать что с чем складывать.
—
VVT
(03.02.2003 23:17,
пустое
)
Ну что вы, спасибо - это много, а вот сто грамм, будет в самый раз.
—
dfg
(03.02.2003 23:24,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru