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

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

Например, код 1|1001доп (–7) после замены цифры знака 1001 (–16+8+1= –7). Аналогично, 1|0000доп (–16) равно 0000 (–16). Коды 0|0111д и 0|0000д положительных чисел (+7) и (+0) в системе с алфавитом можно представить как 00111 и 00000.

Выполнив столь элементарное преобразование множителя Y в Z, можно умножать X на Z любым способом, рассмотренным в разделе 4.4.2.4. Более того, нет необходимости выполнять преобразование множителя. Достаточно интерпретировать его знак 1 как .

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

В вариантах A-E множитель . Поэтому цифра 1 в знаковом разряде Y заменена в коде Z цифрой .

В вариантах A-C при умножении X на изменен знак X. Если знак X не изменять, то последнюю строку необходимо вычитать, как это выполнялось в примере 4-36.

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)

Z:

+00000000 +00000000 +11111010 X +00000000 +00000110 X

+0000000 +0000000 +0000000 +0000000 +0000000

+000000 +000000 +111010 4X +000000 +000110 4X

+01000 -8X +00111 -8X +01110 -8X +11001 -8X +11010 -8X

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)

Z:

+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)

В вариантах F-J множитель . Поэтому код Z совпадает с кодом Y. Частные произведения равные нулю можно вычитать или складывать.

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

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

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

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

Действительно, замена цепочки ...00111110... в Y на в Z приводит к увеличению количества нулей в Z и, как следствие, к уменьшению не нулевых частных произведений в матрице и не изменяет количественного эквивалента Z и произведения XY. Если вес младшего разряда содержащего 1 в исходной цепочке , то ее количественный эквивалент , где – индекс старшего разряда цепочки содержащего 1. Количественный эквивалент цепочки после преобразования: сохраняется прежним.

Если цепочка включает знаковый разряд равный 1, например 1|11100 ..., то после замены получим (1 слева не приписываем). Количественный эквивалент исходной цепочки с учетом отрицательного веса знакового разряда равен количественному эквиваленту результата преобразования .

П

Таблица 4.5

yi yi-1

zi

Частное

произведение

0 0

0 1

1 0

1 1

0

1

1

0

0

X

X

0

равило преобразования кода Y в код Z описано в табл.4.5. Здесь и цифры в разряде где – индекс знакового разряда в Y. Цифра .

Например, если преобразуемый разряд и его сосед справа , то результат преобразования .

Преобразование можно выполнять последовательно, просматривая разряды кода Y слева направо, или справа налево, или одновременно во всех разрядах.

П

Y= 01111 0011 011 01д (+7789) 1011110111 010д (-2118) 10000д (-16) 011111д 111111д

ример 4-41
. Здесь приведены результаты преобразования дополнительных кодов двоичных чисел по правилу, описанному в табл.4.5.

Длина формата Z должна быть равна длине формата Y. Поэтому при умножении с применением табл.4.5 количество строк в матрице частных произведений должно быть равно длине формата Y, включая его разряд знака как в примере 4-41. Это не исключает возможность сокращения столбцов знака и дополнительного значащего разряда произведения при их вычислении по отдельным правилам.

При умножении код Z не фиксируют, а лишь подразумевают. Если, например цифры множителя , то частное произведение равно нулю, так как . При частное произведение на цифру равно (–X), так как . При частное произведение на цифру равно (X), так как .

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

П

A B С D

X: 1|01010 д (-22) 1|01010 д (-22) 0|10111 д (+23) 0|1 0 0 1 0 д (+18)

Y: 1|01110 д (-18) 1|01110 д (-18) 1|00000 д (-32) 0|1 0 1 0 1 д (+21)

Z: (-18)

100010 100010 000000 010101

000000000000 0000000000 000000000 1111111101100 -X

00000010101 -2X 000010100 -2X 000000000 000000010010 2X

0000000000 00000000 00000000 11111101100 -4X

000000000 0000000 0000000 0000010010 8X

11101010 101010 000000 111101100 -16X

0010101 32X 10100 32X 01001 -32X 00010010 32X

000110001100 (+396) 000110001100 (+396) 110100100000 (-736) 0000101111010 (+378)

ример 4-42
. Во всех вариантах примера выполнено умножение в дополнительном коде с преобразованием множителя по табл.4.5. Код 1|000доп применяется для кодирования числа . Так как , разрядность произведения , что предопределяет размерность матрицы.

В варианте A вычисляются все разряды произведения. Множитель Y преобразован в Z в явном виде. Изменение знака множимого X при умножении на частично совмещено со сложением строк матрицы. Для этого в строки частных произведений записаны обратные коды (–X) и в матрицу введена дополнительная верхняя строка, показанная жирным шрифтом, увеличивающая обратные коды на 1 до дополнительного кода. Знак и дополнительный старший значащий разряд результата вычислены при сложении строк матрицы и показаны жирным шрифтом. Перенос из знакового разряда не вычисляется.

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

В варианте B значения частных произведений найдены по табл.4.5 без промежуточного преобразования Y в Z (преобразование выполнено неявно). Разряды знака и дополнительный старший значащий разряд результата вычислены по отдельным правилам (раздел 4.4.2), что позволило исключить два левых столбца в матрице.

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

В варианте C применен тот же способ формирования матрицы, что и в варианте B, но младший разряд произведения сразу записан в результат. Дополнительная строка содержит только нули, поскольку младший разряд множимого 1. Значение Z приведено лишь для облегчения анализа читателю.

Вариант D иллюстрирует, что при рассматриваемом способе преобразования множителя (табл.4.5), количество нулей в Z и соответственно количество нулевых строк в матрице может уменьшаться, а не увеличиваться.

Существенно, что преобразование множителя Y в Z и запись частных произведений можно выполнять, начиная с любого разряда множителя и в любой последовательности. Ничто не препятствует одновременному и независимому формированию всех частных произведений.

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

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

Известно множество вариантов организации процесса вычисления произведения, в основу которых положена табл.4.5. Один из них получил распространение в практике проектирования арифметических устройств и известен как алгоритм Бута (Booth) [10].

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

Действительно, если цепочка содержит только одну единицу, обрамленную нулями, то такая единица заменяется двумя единицами , и количество нулей в множителе сокращается. Кроме того, каждый изолированный нуль, разрывающий цепочку единиц, заменяется единицей. Это компенсирует выигрыш от преобразования длинных цепочек единиц. В предельном случае, если в исходном представлении множителя единицы чередуются с нулями, то после преобразования множитель будет иметь единицы во всех разрядах. Действительно: 010101  , а 1010101 .

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

Можно устранить выявленные причины отсутствия выигрыша. К этой задаче мы вернемся в разделе 4.4.2.7. В настоящем разделе продолжим исследование полученного результата.

Анализируя цепочки возможных значений Y можно заметить, что в Z

  • первая справа единица всегда отрицательная ;

  • цифры 1 и чередуются, в промежутках между ними могут быть нули;

  • сочетания 11 и не встречаются.

Эти свойства цепочек Z следуют также из анализа результата преобразования по табл.4.5. Действительно.

Так как , то . Если , то и т.д. Следовательно, первая единица в Z справа будет всегда отрицательной.

Рассмотрим условия получения сочетания 11 в Z. Из табл.4.5 следует, что значение может быть только при . Чтобы было , необходимо и , но это требование противоречит условию получения . Следовательно, в Z двойка отсутствует. По аналогичным причинам в Z отсутствует сочетание .

Выявленные свойства можно использовать при разработке процесса вычисления произведения. Отсутствие в Z сочетаний 11 (3) и (-3) позволяет сформулировать правило умножения на два разряда множителя (раздел 4.4.2.9).