Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения

Умножение чисел со знаком

Умножение чаще всего производится в допонительном коде

Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru

1. Перемножаем числа без знака

старший разряд числовой

переполнение перенос

2. Вещественные числа

Признак переноса не является признаком переполнения

V – признак арифметического переполнения (OVR)

V=1

Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru - управляемая инверсия

Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru модифицированный сдвиг

Модифицированный код – под знак отводотся 2 бита; при этом изменяется только младший знаковый разряд, старший остается правильным

B – отрицательное

P = A·Доп(B) = A·(2n – |B| ) = A·2n – A·B = A·2n + Доп(A·|B|)

Pбез bn-1 = A·2n – A·|B| – A·2n-1 = A·2n-1 + Доп(A·|B|) = A (зн. B)· 2n-1 + Доп(A·|B|)

Доп(A·|B|) = Pист = Рбез bn-1 – A·bn-1·2n-1

Умножаем на (n-1) младший разряд множителя с учетом знака множимого.

Из полученного произведения вычитаем множимое, умноженное на знаковый разряд с его весом

P = 0 + A·b0 + A·b1 + … + A·bn-1 + (– A·bn-1)

Деление

Деление – одна из многих обратных операций

Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru

Делимое должно быть 2n разрядным; делитель и частное – n-разрядными

Р – делимое

А – делитель

В – частное

Любая обратная операция определяется методом подбора цифр

bn-1·A £ P

(bn-1 + 1)·A > P

bn-1 = 1

P – A ³ 0

P = P n-1 = P n-2 + pn-1

Произведение º Делимое

Частичные суммы º остатки (P i )

P n-2 = P n-1 – pn-1

Если остаток ³ 0, то bn-1 = 1,

иначе bn-1 = 0

bi – очередной разряд частного

1) алгоритм деления с восстановлением остатка

Восстанавливаем остаток, если лн меньше нуля

Если очередной остаток (P i – A)< 0, то восстанавливаем его, т.е. заменяем на P i

Пусть (P i – A) – текущий остаток от деления;

Если он отрицательный, то нужно вернуться к прежнему остатку, т.е.

P i – A + A = P i-1 – следующий остаток,

и осуществляется сдвиг делителя вправо – А/2

Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru P i-1 –A/2 = P i – A + A – A/2 = (P i – A) + A/2

отрицательный остаток

2) алгоритм деления без восстановления остатка

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

Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru P i-1 –A/2 = (P i – A) + A/2

отрицательный остаток

в очередной разряд частного записываем 0;

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

P i-1 –A/2 = (P i – A) – A/2

в очередной разряд частного записываем 1;

Если предыдущая цифра 1 – вычитаем делитель

0 – прибавляем делитель

Если хотим осуществить умножение быстрее, чем за n тактов, то существует 2 варианта:

1. Новые алгоритмы

2. Построение специализированных схем

Новые алгоритмы

Умножение 16-ти разрядных чисел

Умножаются за 16 тактов – в двоичной системе

за 8 тактов – в восьмеричной системе

Умножение с анализом двух разрядов

Вычисления в четверичной СС

0 00

1 01

2 10

3 100-001 (3=4-1)

Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru

Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru основной алгоритм Бута, не теряется знак

Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru упрощенный алгоритм Бута

qст – признак коррекции предидущего разряда

Рассмотрим один из способов умножения на два разряда множителя, начиная с его младших разрядов (упрощенный алгоритм Бута). В зависимости от результата анализа пары разрядов множителя предусматриваются следующие действия. При 00 производится простой сдвиг на два разряда вправо суммы частичных произведений. При 01 к сумме частичных произведений прибавляется одинарное множимое и сумма частичных произведений сдвигается на два разряда вправо. При 10 прибавляется удвоенное множимое и сумма частичных произведений сдвигается на 2 разряда вправо. При 11 из суммы частичных произведений вычитается одинарное множимое и сумма частичных произведений сдвигается на два разряда вправо. Тогда в первых трех случаях результат получается правильный, а в последнем – неправильный, он должен быть скорректирован на следующем шаге.

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

Это учитывается при обработке следующей пары разрядов. Если следующая пара 00, по она обрабатывается как 01, если 01, то как 10, если 10 то как 11, если 11, то как 00 и фиксируется необходимость коррекции при обработке следующей пары. Удвоенное множимое может быть получено его сдвигом. Признак необходимости коррекции может запоминаться в отдельном триггере коррекции.

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

Произведение и множимое хранятся в РЗУ, множитель – в регистре расширения - student2.ru

Наши рекомендации