Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОДЕРЖАНИЕ 3 (2).doc
Скачиваний:
46
Добавлен:
31.08.2019
Размер:
6 Мб
Скачать
☆
        1. Умножение дополнительного кода множимого на дополнительный код множителя

Умножение дополнительного кода множимого на требует преобразование отрицательного Y в прямой код, что осложняет вычисления, но исключает преобразования множимого и произведения из прямого в дополнительный код.

Существует возможность исключить преобразование кода отрицательного множителя. Действительно.

При значащие разряды дополнительного кода множителя равны . Если множимое умножать на этот код, суммируя частные произведения на значащие разряды , то результат будет равным . Так как дополнительный код произведения при должен быть , то для его получения достаточно к прибавить и вычесть .

При значащие разряды дополнительного кода множителя равны , и произведение . Поэтому при прибавлять и вычитать не следует.

Чтобы вычислить разряд дополнительного кода произведения, включая знаковый разряд, необходимо расширять частные произведения влево до разрядов по тем же правилам, которые использовались в разделе 4.4.2.2.

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

A B C D E

X: 1|000 д (-8) 1|001 д (-7) 1|010 д (-6) 0|111 д (+7) 0|110 д (+6)

Y: 1|000 д (-8) 1|000 д (-8) 1|101 д (-3) 1|000 д (-8) 1|101 д (-3)

+00000000 +00000000 +11111010 +00000000 +00000110

+0000000 +0000000 +0000000 +0000000 +0000000

+000000 +000000 +111010 +000000 +000110

–11000 –11001 –11010 –00111 – 00110

01000000д (+64) 00111000д (+56) 00010010д (+18) 11001000д (-56) 11101110д (-18)

F G H I J

X: 1|000 д (-8) 1|001 д (-7) 1|010 д (-6) 0|111 д (+7) 0|110 д (+6)

Y: 0|111 д (+7) 0|111 д (+7) 0|011 д (+3) 0|111 д (+7) 0|011 д (+3)

+11111000 +11111001 +11111010 +00000111 +00000110

+1111000 +1111001 +1111010 +0000111 +0000110

+111000 +111001 +000000 +000111 +000000

–00000 –00000 –00000 –00000 –00000

11001000д (-56) 11001111д (-49) 11101110д (-18) 00110001д (+49) 00010010д (+18)

Пример 4-36. Код 1|000доп применяется для кодирования числа . Вычисляется разряд дополнительного кода произведения двоичных чисел со знаком без преобразования дополнительных кодов операндов в прямой при . Знаковый разряд произведения показан жирным шрифтом. Слева от строк матрицы показан знак выполняемой операции сложения (+) или вычитания (–). Строки матрицы расширены влево до разрядов знаками соответствующих частных произведений.

В вариантах A-E множитель . Поэтому из суммы частных произведений на значащие разряды множителя вычитается . Операцию вычитания можно заменить сложением с . Это потребует вычисления Прибавление константы не выполняется, так как это приведет к вычислению лишнего разряда в произведении слева.

В вариантах F-J множитель . Произведение . Поэтому вычитать не следует и нижняя строка матрицы содержит нули. Разумеется, что эту строку можно не записывать в матрицу и не выполнять ее вычитание, что уменьшит размерность матрицы и упростит вычисления.

Обратите внимание, что в примере 4-36 можно заменить операции сложения вычитанием, если изменить знаки частных произведений по правилу изменения знака числа в дополнительном коде. Можно, напротив, заменить операцию вычитания сложением, если изменить знак дополнительного кода в последней строке матрицы. Разумеется, что нулевые строки при изменении знака не изменят свое значение, так как в дополнительном коде существует только (+0).

Пример 4-37. Код 1|000доп применяется для кодирования числа . Вычисляется разряд дополнительного кода произведения десятичных чисел со знаком без преобразования дополнительных кодов операндов в прямой код при .

A B C D E

X: 1|000 д (-103) 1|001 д (-999) 1|001д (-999) 0|999д (+999) 0|999д (+999)

Y: 1|000 д (-103) 1|000 д (-103) 1|602 д (-398) 1|000 д (-103) 1|602 д (-398)

+00000000 +00000000 +99998002 +00000000 +00001998

+0000000 +0000000 +0000000 +0000000 +0000000

+000000 +000000 +994006 +000000 +005994

–99000 –99001 –99001 –00999 –00999

01000000д (+106) 00999000д 00397602д 99001000д 99602398д

– 0999000 – 0397602

F G H I J

X: 1|000д (-103) 1|001д (-999) 1|602д (-398) 0|999д(+999) 0|398д (+398)

Y: 0|999 д 0|999 д (+999) 0|242 д (+242) 0|999 д 0|242 д (+242)

+99991000 +99991009 +99999204 +00008991 +00000796

+9991000 +9991009 +9998408 +0008991 +0001592

+991000 +991009 +999204 +008991 +000796

–00000 –00000 –00000 –00000 –00000

99001000д 99001999д 99903684д 00998001д 00096316д

– 0999000 – 998001 – 0096316

Слева от строк матрицы показан знак выполняемой операции сложения (+) или вычитания (–). Строки матрицы расширены влево до разрядов. Цифра, расширяющая множимое влево, задана по умолчанию. При вычислении частного произведения умножение на эту цифру выполняется с отбрасыванием цифры переноса. К полученному результату приписываются цифры расширяющие произведение показанные жирным шрифтом.

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

При положительном множителе последняя строка матрицы содержит нули и ее можно не записывать в матрицу.

Знак (–) кода представлен цифрой обратной нулю. При она равна 9. Это создает некоторые неудобства. Такое кодирование знака произведения можно заменить принятым ранее разными способами. Например, так, как это сделано в примере 4-35 варианты A-C.

Если воспользоваться правилами вычисления знака, дополнительного значащего разряда произведения и значения произведения при операндах равных 0 или 1|000, то это существенно упростит вычисления и приведет в примерах 4-36 и 4-37 к ликвидации в матрицах двух крайних слева столбцов.

В примере 4-37 вычисления выполняются в десятичной системе счисления. Что изменится, если операнды и результат должны быть представлены в дополнительном коде в восьмеричной, шестнадцатеричной или иной системе счисления с основанием ? Ответ прост. Все сохранится кроме таблиц умножения и значения цифры расширяющей значащие разряды слева.