|
|
|
McLarenfan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 27.4.2009 Где: Москва Репутация: нет Всего: нет |
Всем привет!
У меня есть вопрос не по программированию как таковому, а по алгоритмам, может кто поможет... Я пишу на языке Verilog кусок АЛУ, который в частности должен умножать целые знаковые\беззнаковые 32-разрядные числа. Для ускорения выполнения операции знакового\беззнакового умножения использую модифицированный алгоритм Бута с анализом за цикл 3 бит множителя, вроде бы разобрался с ним, а стал рассматривать на примере и получаемый результат не совпадает с теоретическим... Взял 2 числа: 101 - 01100101 78 - 01001110 и рассмотрел все 4 комбинации знаков этих чисел...получилось только для случая положительных знаков... анализирую множитель...расширяю его: 0010011100 получаю 3 группы: 1100 - соответствует множимому, умноженному на -2 0011 - соответствует множимому, умноженному на 2 0010 - соответствует множимому получается 3 частичных произведения, смещенных относительно друг друга на разряда влево соответственно: 11111100110110 00011001010 01100101 _______________ 01111011000110 - что соответствует нужному результату в 7878 (пары операндов выбрал случайным образом) А вот для остальных комбинаций знаков почему то не сходится, хотя делаю всё также... -101 - 10011011 -78 - 10110010 анализирую множитель...расширяю его: 0101100100 получаю 3 группы: 0100 - соответствует множимому, умноженному на 2 1100 - соответствует множимому, умноженному на -2 0101 - соответствует множимому, умноженному на 3 получается 3 частичных произведения, смещенных относительно друг друга на разряда влево соответственно: 11111100110110 00011001010 11010001 _______________ 11010111000110 - неверный результат -101 - 10011011 78 - 01001110 анализирую множитель...расширяю его: 0010011100 получаю 3 группы: 1100 - соответствует множимому, умноженному на -2 0011 - соответствует множимому, умноженному на 2 0010 - соответствует множимому 00000011001010 11100110110 10011011 _______________ 10000000111010 - неверный результат 101 - 01100101 -78 - 10110010 анализирую множитель...расширяю его: 0101100100 получаю 3 группы: 0100 - соответствует множимому, умноженному на 2 1100 - соответствует множимому, умноженному на -2 0101 - соответствует множимому, умноженному на 3 000000011001010 111100110110 100101111 ________________ 100010100111010 - неверный результат Просьба объяснить в чем я ошибаюсь, на каком этапе...а то уже отчаялся... Всем заранее спасибо и удачи! |
|||
|
||||
teesync |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 26.7.2022 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |