Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дубинин Н.М. Методические указания по курсовому проектированию.DOC
Скачиваний:
29
Добавлен:
02.05.2014
Размер:
668.16 Кб
Скачать

6.3.2. Методика выполнения умножения над дополнительными кодами чисел

Операцию умножения над дополнительными кодами исходных чисел можно трактовать в общем виде следующим образом:

  • если Х>0 и Y>0, то поскольку [ Х>0 ]д =Х, [Y>0]д =Y специфика выполнения умножения здесь не проявляется;

  • если Х< 0, а Y>0, то [ Х<0 ]д = 2+Х и [ Х ]д [ Y ]д = 2Y + ХY - так называемое псевдопроизведение, и для того чтобы получить правильный результат [ ХY<0 ]д = 2+ХY, необходимо к псевдопроизведению прибавить 2 и вычесть 2Y;

  • если Х> 0, Y< 0, то [ Х ]д [ Y ]д = 2Х+2Y, и здесь необходима поправка, равная +2 и -2Х;

  • если Х< 0 и Y<0, то [Х]д [Y]д = (2+Х)(2+Y), а правильный результат ХY, и необходима поправка -4 - 2Х - 2Y.

  • Существует несколько способов введения поправок. Рассмотрим на примере умножения с младших разрядов множителя способ, обеспечивающий автоматическое введение поправок при любых знаках перемножаемых чисел.

  • Обозначим разряд дополнительного кода множителя, на который производится умножение через y(n+1-i). По отношению к данному разряду младший будет y(n+2-i). Алгоритм рассматриваемой методики заключается в следующем:

  • если y( n+1- i ) = y( n+2 - i ) ,то производится лишь сдвиг частичного произведения A( i - 1 ) ;

  • если y( n+1 - i ) = 0 , а y( n+2 - i ) = 1, то к A( i - 1 ) прибавляется [ Х ]д;

  • если y( n+1 - i ) = 1 , а y( n+2 - i ) = 0, то из A( i - 1 ) вычитается [ Хд ] или к A( i - 1) прибавляется [ - [ Х ]д ]д.

Для этого алгоритма справедлива следующая рекуррентная формула:

A( i ) = A( i - 1 ) + (у( n+2 - i ) - у( n+1 - i ) ) [ Х ]д

При этом операция состоит из n+1 такта для i=1,...,n+1 . Другими словами, умножение производится и на знаковый разряд множителя y0. После умножения на y0 получаем A( n+1 ) = [ Х ]д [ У ]д = [ Z ]д , сдвиг A( n+1 ) не производится.

Рассмотренная методика применима и к умножению со старших разрядов множителя. Алгоритм выполнения операции имеет следующий вид:

[Х]д [У]д = [Х]д (у1-у0) + [Х]д (у2-у1) + ...+[Х]д(уn-уn-1)+[Х]д (уn+1 - уn)

6.3.3 Выполнение операции умножения над обратными кодами сомножителей

Рассмотрим методику умножения с младших разрядов с анализом знаков сомножителей:

  • если Х>0 и Y>0, то здесь используется обычная методика,

  • если Х<0 и Y>0, то в данном случае:

  • A( i ) = A( i - 1 ) + [ Х<0 ]0 у( n+1 - i )

Как частичные произведения, так и окончательное, будут представлены в обратном коде;

  • Если Х>0, а Y<0 ,то необходимо осуществить передачу [ -0, x1,...,xn ]0 = 1, ... в сумматор, если y( i ) = 0. При y( i ) = 1 передача множимого не производится. При этом y( i ) - цифры обратного кода отрицательного множителя;

  • Если Х<0 и У<0 ,то при yi = 0 осуществляется передача не исходного кода [Х<0]0 = 1,..., а положительного кода множимого 0,x1...xn, который получается с помощью логической операции отрицания; при y( i ) = 1 передача множимого не осуществляется. Произведение в этом случае получается положительным.

Данную методику можно распространить и на умножение со старших разрядов обратных кодов.

Преимущество умножения чисел в дополнительных и обратных кодах заключается в том, что знак и цифровая часть произведения получаются за один этап, состоящий из (n+1) такта умножения.