Пример. Занесем операнды на регистры.
[А]пр = 0,110001, [РА]пр = 1,011;
[В]пр = 1,100101, [РВ]пр = 0,101;
С = А ´ В.
Занесем операнды на регистры.
;
.
1. Определение знака произведения.
ЗнС = ЗнА Å ЗнВ = 0 Å 1 = 1.
.
2. Определение порядка произведения.
РС = РА + РВ.
Выполним сложение порядков в модифицированном дополнительном коде.
|

3. Умножение мантисс.

1. + 


2. + 


3. + 

(окончание примера на следующей странице)

4. + 


5. + 


6. + 


Окр. + 

Отбросим дополнительный седьмой разряд и выполним проверку правильности умножения в десятичной системе счисления.
С = 0,011100(2) = 1/4 + 1/8 + 1/16 = 0,4375(10);
А´|В|= 0,110001(2) ´ 0,100101(2) = 0,765625(10) ´ 0,578125(10) » 0,4426(10).
Таким образом, погрешность составляет 0,0051, т.е. меньше половины веса шестого разряда.
4. Ограничение результата шестью разрядами, нормализация и присвоение знака.
Нормализация:
;
;
Окончательно 
Как было сказано ранее, умножение можно выполнять не только младшими, но и старшими разрядами вперед. Для этого следует выполнить n циклов умножения по числу разрядов множителя. Каждый цикл распадается на два такта. В первом такте регистр множимого сдвигается на один разряд вправо, регистр множителя сдвигается на один разряд влево, сумматор в обоих тактах неподвижен. Во втором такте выполняется арифметическая операция сложения: если в знаковом разряде множителя содержится единица, то во втором такте к содержимому сумматора прибавляется множимое, в противном случае к сумматору прибавляется ноль. Такт суммирования очередного частичного произведения с нулем можно пропускать.
Следует помнить, что сумматор и регистр множимого должны иметь дополнительные разряды, так как в результате сдвига вправо множимое теряет значащие разряды. Количество дополнительных разрядов k должно удовлетворять следующему неравенству:

Все остальные этапы умножения такие же, как и в случае умножения младшими разрядами вперед.
Дата добавления: 2014-12-27; просмотров: 791;
