Пример. Занесем операнды на регистры.
[А]пр = 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; просмотров: 713;