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

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

Поскольку ноль в дополнительном коде варианта B имеет код знака 0, то произведение множимого на цифру 0 множителя имеет код 00…0д независимо от того с каким знаком и в какой системе счисления оно должно быть вычислено.

В двоичной системе счисления произведение множимого на цифру 1 с обратным знаком можно вычислить по правилам изменения знака числа в дополнительном коде.

Непосредственное изменение знака числа в двоичном дополнительном коде.

10. Для изменения знака числа достаточно инвертировать цифры в разрядах, у которых справа есть хотя бы одна 1.9

Пример 4-48. Выполнено изменение знака дополнительного кода операнда в двоичной системе счисления по правилу 10.

В

A B C D E

X: 0|10100 0|01001 1|01100 1|10111 0|00000

-X: 1|01100 1|10111 0|10100 0|01001 0|00000

F G H I K

X: 11|00000 11|01100 00|10100 00|01001 00|00000

-X: 0|100000 0|010100 1|101100 1|110111 0|000000

вариантах A-E примера код 1|00000 не применяется для кодирования числа и не может быть операндом. Поэтому разрядность результата совпадает с разрядностью операнда.

В вариантах F-K принято, что код 1|00000д применяется для кодирования числа . Поэтому формат результата расширен на один разряд влево. Для этого учитывается, что в операнде слева от разряда знака размещается его копия, заданная неявно, но в примерах показанная жирным шрифтом. Эта копия преобразуется в разряд знака результата.

Изменение знака по правилу 10 требует просмотра значений разрядов справа налево, что при большой разрядности операнда замедляет процесс преобразования. Чтобы ускорить, можно разбить операнд на группы разрядов, например по 8 разрядов в группе, начиная со второго разряда справа, и вычислять параллельно признаки наличия 1 в группах. Младший разряд следует копировать в результат. Преобразования разрядов в группе выполняют с учетом значения признаков в правых группах и значения цифры в младшем разряде.

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

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

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

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

Пример 4-49. Выполнятся умножение дополнительных кодов множимого X на множитель Y с вычислением всех разрядов дополнительного кода произведения, включая разряд знака и дополнительный старший значащий разряд. Так как количество значащих разрядов в сомножителях , то разрядность произведения .

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

В вариантах A и F умножение на выполняется способом, описанным в разделе 4.4.2.2. Поскольку частные произведения вычитаются.

В вариантах B-E, G-K принято решение о замене операции вычитания строк матрицы сложением, что потребовало изменения знака частных произведений.

В вариантах B и G частные произведения со знаком обратным знаку множимого вычислены по правилу 10.

В вариантах C и H для изменения знака частных произведений применено правило 20. Для этого в строки частных произведений записаны их инверсии и в матрицу введена дополнительная верхняя строка, показанная жирным шрифтом, в которую записаны 1 дополняющие инверсные коды до дополнительного. Фактически в дополнительную строку будет всегда записан код .

В вариантах D, E, I, K для изменения знака частных произведений применено правило 30. Для этого в строки матрицы записаны инверсии всех разрядов частных произведений кроме младшего и введена дополнительная верхняя строка, показанная жирным шрифтом. Содержимое дополнительной строки совпадает с (варианты D и I), если младший разряд множимого 1, иначе оно равно 0 (варианты E и K). Код в верхней строке сдвинут на разряд влево, поскольку 1 должны прибавляться ко вторым разрядам частных произведений.

Пример 4-50 иллюстрирует возможность замены операции сложения операцией вычитания строк матрицы и справедливость правил изменения знака при вычитании строк.

Пример 4-50. Выполнятся умножение в дополнительном коде тем же способом, что и в примере 4-49. Поскольку множитель , частные произведения должны суммироваться (варианты A и F).

В вариантах B-E, G-K принято решение о замене операции сложения строк матрицы вычитанием, что потребовало изменения знака частных произведений.

В вариантах B и G изменение знака выполнено по правилу 10.

В вариантах C, H и D, E, I, K изменение знака выполнено по правилам 20 и 30 соответственно.

Справедливость вычитания дополнительных строк в вариантах C-E и H-K вытекает из отношения .

К омбинированные способы вычисления частного произведения со знаком обратным знаку множимого.

Можно вычислить частное произведение со знаком обратным знаку множимого, применив комбинацию правила 10 с правилами 20 или 30. Для этого достаточно разбить множимое на две группы разрядов старшие и младшие. В одной группе выполнять преобразование по правилу 10, а в другой – по правилу 20 или 30.

Пример 4-51. Вычисляется произведение с обратным знаком множимого X на 1. Для этого множимое разбито на две группы разрядов.

В

A B C D E F

X: 0|1010|0100 0|1010|1000 0|1010|0000 0|1010|0100 0|1010|1000 0|1010|0000

1|0101 1|0101 1|0101 1011 0111 1111

+0 +0 +1 +1 +1 +1

-X: 1|0101|1100 1|0101|1000 1|0110|0000 1|0101|1100 1|0101|1000 1|0110|0000

вариантах A-C преобразование группы младшей четверки разрядов выполняется по правилу 10, а в старшей группе, включая разряд знака по правилу 20. В старшей группе все разряды инвертируются, и к ним прибавляется 1 только в случае, если во всех разрядах младшей группы 0.

В вариантах D-F преобразование группы младшей четверки разрядов выполняется по правилу 20, а в старшей группе, включая разряд знака по правилу 10. В старшей группе все разряды инвертируются, если в разрядах младшей группы есть хотя бы одна 1. Если в младшей группе только 0, то в старшей группе инвертируются разряды, у которых справа есть 1.

Разумеется, что могут быть разработано множество иных вариантов комбинированного преобразования.

Не трудно убедиться в том, что все приведенные правила справедливы в случаях, когда операнды равны 0|00…0 и/или 1|00…0.

Вычисление частного произведения со знаком обратным знаку множимого в системе счисления с основанием .

В системе счисления с основанием вычислить частное произведение со знаком обратным знаку множимого можно, приняв за основу один из двух подходов:

– умножить множимое с обратным знаком на цифру множителя, пользуясь обычной таблицей умножения;

– умножить множимое на цифру множителя по специальной таблице умножения.

Каждый подход порождает множество вариантов. Ограничимся рассмотрением лишь некоторых из них, причем для случая, когда значащие разряды операндов не равны 00…0. Предполагается, что знак произведения, дополнительный старший разряд и результат умножения при операндах равных 0|00…0 и/или 1|00…0 вычисляется по отдельным правилам (раздел 4.4.2).

При первом подходе необходимо вычислить дополнительный код множимого с обратным знаком. Для этого можно воспользоваться правилом непосредственного преобразования 40 или правилом 50 или их комбинациями.

Непосредственное изменение знака числа в дополнительном коде в системе счисления с основанием P > 2.

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

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

При умножении дополнительного кода множимого на цифру множителя необходимо расширить код множимого влево цифрой 0, если код знака множимого 0, иначе цифрой 9 (раздел 4.4.2.2).

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

Пример 4-52. Выполняется умножение десятичных чисел в дополнительном коде при . Код 1|0000 для представления числа не используется. Операнды предварительно проверяются на код 1|0000 и 0|0000, и если хотя бы один из них имеет такой код, результат умножения вычисляется по отдельным правилам (раздел 4.4.2). Поэтому при выполнении собственно умножения операнд не может быть равным 0 или 1|0000.

Р

A B C D E

X: 1|8030 д (-1970) 1|8030 д 0|1970 д 1|0001 д (-9999) 0|1000 д (+1000)

Y: 1|6976 д (-3024) 1|6976 д 1|6976 д 1|0020 д (-9980) 1|0001 д (-9999)

999992120 01960 98020 09998 98000

99996060 × 3024 × 3024 × 9980 × 9999

0000000 + 0030240 + 0030240 + 0009980 + 9999000

994090 + 0320 + 3000 + 0000 + 7000

005957280 д + 00004640 + 99962080 + 00000000 + 99912000

+ 05957280 + 0110 + 1000 + 7776 + 7000

+ 0002820 + 9986040 + 0002224 + 9912000

+ 0000 + 0000 + 8887 + 7000

+ 000000 + 000000 + 001112 + 912000

+ 0210 + 2000 + 8887 + 7000

+ 03780 + 74060 + 01112 + 12000

005957280 д 194042720 д 099790020 д 190001000 д

+ 05957280 –05957280 +99790020 – 09999000

азрядность произведения . Вычисляются все 8 значащих разрядов произведения. Знак произведения равен сумме по модулю 2 знаковых разрядов операндов.

В варианте A умножение выполняется по правилам, описанным в разделе 4.4.2.2 (пример 4-34). Модуль множителя . Частные произведения вычитаются, поскольку . Значащие разряды отрицательного множимого расширены слева цифрой 9, и умножение дополнительного разряда на разряд выполняется с отбрасыванием цифры переноса.

В вариантах B-E умножение выполнено тем же способом, что и в варианте A, но операция вычитания частного произведения заменена операцией сложения. Для этого знак множимого заменен обратным по правилу 40. Все цифры в коде X, размещенные слева от цепочки нулей, заменены обратными (третья строка сверху), и полученный код расширен влево 0 показанным жирным шрифтом, так как множимое с обратным знаком имеет код знака 0. Прибавление 1 к младшей цифре этой группы совмещено со сложением частных произведений. С этой целью в матрицу частных произведений введена верхняя строка, показанная жирным шрифтом.

Частные произведения представлены в матице двойками строк. Нижняя строка двойки содержит младшие разряды, а верхняя строка – старшие разряды произведения цифры множимого на цифру множителя. Это позволило совместить сложение переносов при умножении множимого на цифру множителя со сложением строк матрицы.

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

Варианты B-E отличаются лишь значениями операндов.

При замене операции сложения строк матрицы вычитанием вычисление частных произведений со знаком обратным знаку множимого можно выполнять точно так, как это сделано в примере 4-52.

50. Для изменения знака дополнительного кода числа в системе счисления с основанием достаточно заменить значащие цифры обратными и увеличить полученный код на 1 младшего разряда.

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

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

Пример 4-53. Выполняется умножение тех же чисел, что и в примере 4-52, при тех же условиях и тем же способом, но изменение знака множимого в вариантах B-E выполнено по правилу 50. Для этого значащие цифры множимого заменены обратными.

Множимое расширено на один разряд слева в зависимости от знака цифрой 0 или 9, показанной жирным шрифтом.

Ч

A B C D E

X: 1|8030 д (-1970) 1|8030 д 0|1970 д 1|0001 д (-9999) 0|1000 д (+1000)

Y: 1|6976 д (-3024) 1|6976 д 1|6976 д 1|0020 д (-9980) 1|0001 д (-9999)

999992120 01969 98029 09998 98999

99996060 × 3024 × 3024 × 9980 × 9999

0000000 + 3024 + 3024 + 9980 + 9999

994090 + 0323 + 3003 + 0000 + 7888

005957280 д + 00004646 + 99962086 + 00000000 + 99912111

+ 005957280 + 0111 + 1001 + 7776 + 7888

+ 0002828 + 9986048 + 0002224 + 9912111

+ 0000 + 0000 + 8887 + 7888

+ 000000 + 000000 + 001112 + 912111

+ 0212 + 2002 + 8887 + 7888

+ 03787 + 74067 + 01112 + 12111

005957280 д 194042720 д 099790020 д 190001000 д

– 05957280 +99790020 – 09999000

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

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

Умножение множимого на цифру множителя по специальной таблице умножения

При , чтобы вычислить строку матрицы с обратными цифрами, можно умножать множимое, расширенное на один старший разряд, на цифру множителя по таблице умножения, в которой цифры произведения заменены обратными. Например, в десятичной системе , , .

Частное произведение можно представлять в матрице двумя строками, например как это сделано в примере 4-53 вариант B. Обратные коды обеих строк нужно увеличить на 1 младшего разряда для получения дополнительного кода частного произведения. Эту операцию можно совместить со сложением строк матрицы, введя строку, содержащую константу, учитывающую 1 прибавляемые к младшим разрядам.

Некоторые дополнительные особенности вычисления определим в процессе рассмотрения следующего примера.

A B

0|799 доп 1|201доп (-799)

× 8 × 8

11 11

+ 9999422 + 0000899

99999377 99997391

99993608 доп 00006392 доп

– 0006392 + 0006392

Пример 4-54. Вычисляется дополнительный код частного произведения с обратным знаком в системе с основанием . Код 1|00…0доп применяется для представления числа Множимое в дополнительном коде, и подразумевается, что оно содержит дополнительный старший значащий разряд 0, если знак множимого (+), иначе 9. Дополнительный код частного произведения должен быть расширен влево до разрядности произведения, как это имеет место в примере 4-37 варианты F-J.

В варианте A множимое 0|0799доп положительное, и вычисляется дополнительный код отрицательного частного произведения. Разряд переноса при умножении отброшен. Обе строки частного произведения расширены влево до требуемого количества разрядов приписыванием цифр обратных 0 показанных жирным шрифтом.

В варианте B множимое 1|9201доп отрицательное и вычисляется дополнительный код положительного частного произведения. Разряд переноса при умножении отброшен. Строка переносов расширена влево 0, а строка младших разрядов произведений расширена цифрами обратными 0.

П

A B C D E F

X: 0|799д (+799) 0|799д 0|799д 0|799д 1|201д (–799) 1|000 д

Y: 1|202 д (-798) 1|202 д 1|202 д 1|202 д 1|202 д 1|000 д (–1000)

00006392 1111 12221 01221 01221 11000

0007191 + 99993607 + 9999422 + 9999422 + 0000899 + 0000000

005593 + 9992808 + 99999377 + 99999377 + 99997391 + 00000000

00000 + 994406 + 999311 + 999311 + 000899 + 000000

99362398д + 99999 + 9999688 + 9999688 + 9998190 + 0000000

– 0637602 99362398д + 99533 + 99533 + 00899 + 00000

+ 999066 + 999066 + 996592 + 000000

+ 9999 + 0000 + 0000 + 0999

+ 99999 + 00000 + 00000 + 90999

99362398д 99362398д 00637602д 01000000 (+106)

ример 4-55
. В вариантах A-C выполняется умножение дополнительного кода числа в системе счисления на (раздел 4.4.2.2). Код 1|00…0 применяется для кодирования числа . Поэтому расширен слева 0. Вычисляются все разряды дополнительного кода произведения, включая разряд знака (0 - +, 9 - –) и дополнительный старший значащий разряд.

В варианте A, так как , то частные произведения вычитаются из нуля.

В варианте B цифры в строках заменены обратными и введена строка константы 1111 дополняющая обратные коды частных произведений до дополнительных. Это позволило заменить операцию вычитания частных произведений сложением.

В варианте C частные произведения с обратным знаком вычисляются тем же способом, что и в варианте A примера 4-54. Произведение множимого на 0 представлено обратным кодом (–0). Это приводит к исключению в матрице строк равных 00…0. Константа дополнений содержит 2 в колонках, в которых размещены младшие разряды двух строк.

В варианте D произведение на 0 принято равным (+0), что исключает необходимость дополнять строки частного произведения 1. Поэтому строка дополнения перестала быть константой, и ее значение зависит от наличия строк содержащих код 00…0.

В варианте E частные произведения с обратным знаком вычисляются тем же способом, что и в варианте B примера 4-54. Произведение множимого на 0 представлено обратным кодом (+0).

В варианте F операнды имеют минимальное значение (–103). Умножение выполняется по тем же правилам, что и в варианте E.

Во всех вариантах в произведении разряд знака и дополнительный значащий разряд выделены жирным шрифтом.

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