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 бита для знакового числа, что бы предотвратить переполнение.
Спасибо всем.
Angel71 » 13 янв 2012, 09:55
Mikex » 14 янв 2012, 01:52
похоже да, спасибо большое)
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
Angel71 » 15 янв 2012, 19:13
столько много букавок

а все репититоры в отпуске.
п.с. есть поисковые системы
п.п.с. первый раз слышу об этом алгоритме.