roboforum.ru

Технический форум по робототехнике.

Умножение двоичных чисел, младшими разрядами вперед.

Материалы для скачивания и прочтения.

Умножение двоичных чисел, младшими разрядами вперед.

Сообщение Mikex » 12 янв 2012, 22:23

Может кто-то сможет помочь, ибо пытался, а у меня ничего не вышло.
Перемножить надо в доп. коде
Вот есть 2 мантиссы и их порядки
MA = 01.11000111
MB = 10.10111000
PA = 0.0111
PB = 1.0010
Сделал нормализацию и получил:
МА = 00.11100011
МБ = 11.01011100

PA = 0.1000
PB = 1.0001

Пытался перемножить и получил ответ:
11,00101101 0 (в дополнительном коде.) в прямом это 11,110100110 0 = число -422, но значение мантиссы числа А = 227, а значение мантиссы Б = -92, и если перемножить эти два числа, получится -20 884.
Может кто подскажет как правильно все это сделать, очень надо. Буду очень благодарен)
Может кто укажет на ошибки, или просто алгоритм подскажет, ибо возможно я что-то не правильно сделал.

Знаю что Порядки складываем и их более не трогаем, до получения числа, а потом просто приписываем степень к числу.
Используется 2 бита для знакового числа, что бы предотвратить переполнение.

Спасибо всем.
Mikex
 
Сообщения: 3
Зарегистрирован: 12 янв 2012, 22:14

Re: Умножение двоичных чисел, младшими разрядами вперед.

Сообщение Angel71 » 13 янв 2012, 09:55

http://ru.wikipedia.org/wiki/Алгоритм_Бута
:) оно?
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Умножение двоичных чисел, младшими разрядами вперед.

Сообщение Mikex » 14 янв 2012, 01:52

похоже да, спасибо большое)
Mikex
 
Сообщения: 3
Зарегистрирован: 12 янв 2012, 22:14

Re: Умножение двоичных чисел, младшими разрядами вперед.

Сообщение Mikex » 15 янв 2012, 16:08

Такой вопрос, вот в вики
A = 0011 0000 0
S = 1101 0000 0
P = 0000 1100 0
откуда взялся Р, это сдвиг А?
Установить значения A и S, а также начальное значение P. Каждое из этих чисел должно иметь длину, равную (x + y + 1).

A: Заполнить наиболее значимые (левые) биты значением m. Заполнить оставшиеся (y + 1) бит нулями.
S: Заполнить наиболее значимые биты значением (−m) в дополнительном коде. Заполнить оставшиеся (y + 1) бит нулями.
P: Заполнить наиболее значимые x бит нулями. Справа от них, заполнить биты значением r. Записать 0 в крайний наименее значимый (правый) бит

Просто, не понял без примера, мб кто-то подскажет например на этих числах.
А = 00.11100011
Б = 11.01011100
Mikex
 
Сообщения: 3
Зарегистрирован: 12 янв 2012, 22:14

Re: Умножение двоичных чисел, младшими разрядами вперед.

Сообщение Angel71 » 15 янв 2012, 19:13

столько много букавок :( а все репититоры в отпуске.
п.с. есть поисковые системы
п.п.с. первый раз слышу об этом алгоритме.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1


Вернуться в Библиотека

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8