Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Деление на константу в асме
Отправлено
S
24 марта 2009, г. 20:40
Надо поделить 16 битное на 10. Какие алгоритмы можно использовать для быстрого деления? Пытался найти что-нибудь о замене деления умножением, но ничего не нашёл.
Составить ответ
|
Вернуться на конференцию.
Ответы
Делимое в
w0: mov #65536/10,w2 \ mul.uu w0,w2,w0
. 2 такта/2 слова и вуаля - результат в w1.
-
MBedder
(24.03.2009, 23:22:55
80.92.96.19
,
пустое
)
Нет. ;)
-
Oldring
(25.03.2009, 03:00:59
91.76.56.48
,
пустое
)
Approximate Multiplication by 1/10
-
m16
(24.03.2009, 22:30:4
78.132.184.252
,
пустое
,
ссылка
)
Если нужно перевести число в 10-чную запись, то проще не делить на 10, а последовательно вычитать 10000, 1000, 100, 10, 1 пока число не станет отрицательным
-
Шунт_гороховый
(24.03.2009, 22:02:6
95.24.85.141
,
пустое
)
Если только сдвигами и суммированием, то: 1/10 = 1/8 – 1/32 + 1/128 -….ну и так далее,
-
Калиновский
(24.03.2009, 21:58:11
91.122.18.114
, 63 байт)
Желательно уточнять транслятор :) A то а тасме х86 это просто+
-
PaulS
(24.03.2009, 21:40:49
78.107.190.20
, 87 байт)
Умножить на 20 (5 раз на 4) и поделить на два (сдвинуть на разряд вправо)
-
Igor_Koval
(24.03.2009, 20:45:29
95.132.235.14
,
пустое
)
(вылезая из-под стола) Это оч-чень круто :)))))))))
-
MBedder
(24.03.2009, 23:29:25
80.92.96.19
,
пустое
)
Чего-чего?
-
Oldring
(24.03.2009, 20:57:14
91.76.59.63
, 108 байт)
Извините, я заработался :) Конечно, так выйдет не деление, а умножение, это и первокласснику ясно :)))
-
Igor_Koval
(24.03.2009, 21:33:13
95.132.235.14
,
пустое
)
А если надо на произвольное число быстро делить, то это у Кнута подробно расписано ...
-
Igor_Koval
(24.03.2009, 20:46:37
95.132.235.14
,
пустое
)
Диапазон?
-
Oldring
(24.03.2009, 20:42:13
91.76.59.63
,
пустое
)
делимое не больше 1000
-
S
(24.03.2009, 20:56:18
90.151.134.225
,
пустое
)
Положительное? Умножить на 6554 и взять третий байт. Навскидку.
-
Oldring
(24.03.2009, 21:04:49
91.76.59.63
,
пустое
)
Альтернатива - умножить на 205 и сдвинуть на 11 бит вправо.
-
Oldring
(24.03.2009, 21:15:35
91.76.59.63
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 123:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru