Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Асм, Алгоритм умножения

13K
10 декабря 2006 года
siili
35 / / 14.10.2006
Получил задание на выходные, написать 3 алгоритма умножения на ассемблере, сразу оговорюсь, что это псевдо ассемблер с обрезанным числом комманд, но не в этом суть. Я написал 2 алгоритма:
банальный цикл, когда число складываеться Н раз
и сравнение двух чисел, а потом уже только складывание Меньшее кол-во раз

Нашел формулировку 3го алгоритма, когда умножение происходит методом "сдвига и сложения", но реализовать его не смог. Кто-нибудь может пояснить как этот метод реализуеться? или хотя бы ссылку на нормальную инфу кинуть(я искал, но ничего делбного не нашел). Заранее очень благодарен:)
13K
10 декабря 2006 года
siili
35 / / 14.10.2006
Никто не знает? Или я что-то неправильно написал? Могу объяснить как происходит умножение: допустим надо перемножить два числа 6 и 10, представляем их в 2чной системе, т.е, 6 = 01.10 и 10 = 10.10. Числа разделены на папы не случайно: части переумножаются в следующем порядке:
Код:
1.) Правая часть "6" * Правая часть "10" = 10*10 = 0100
2.) Правая часть "6" * Левая часть "10" = 10*10 = 0100
3.) Левая часть "6" * Правая часть "10" = 01*10 = 0010
4.) Левая часть "6" * Левая часть "10" = 01 * 10 =0010

Далее идёт сложение:

                0100
+              0100
               0010
              0010
Ответ: 00111100

Интересует как реализовать такое умножение...
1.8K
10 декабря 2006 года
k3Eahn
365 / / 19.12.2005
Попробуй сделать так:
Пусть есть a и b (представляешь их себе в двоичном виде), которые нужно перемножить, и есть c - приёмник результата (он по сути должен вместить результат произведения). a (или его замена) тоже должен быть таким же вместительным, что и c. Далее идёт цикл:

1) Сдвигаешь b вправо на один бит.
2) Смотришь, если при сдвиге произошёл перенос - тогда добавляешь a к c;
3) Сдвигаешь a на один бит влево;
4) Если b ещё не ноль, переходишь к пункту 1.
13K
11 декабря 2006 года
siili
35 / / 14.10.2006
Спасибо, попробую...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог