
Умножение чисел с фиксированной точкой. Умножение двоичных чисел проводится по существу так же, как и умножение десятичных. Умножение выполняется по шагам. Число шагов равно разрядности множителя. На каждом шаге множимое умножается на одну цифру множителя и получается частичное произведение (ЧП). Сумма всех ЧП, предварительно сдвинутых относительно друг друга, образует полное произведение. При этом направление сдвига зависит от используемого метода умножения. Разрядность произведения равна 2п при разрядности сомножителей, равной и.
Умножение целых и дробных чисел с ФТ выполняется по одинаковым алгоритмам. Отличие заключается только в том, что при умножении целых чисел для правильного расположения произве-
дения иногда в разрядной сетке необходим дополнительный сдвиг суммы ЧП вправо.
Так как цифры множителя могут принимать только значения «О» и «1», ЧП могут быть равны либо нулю, либо множимому, поэтому умножение двоичных чисел сводится к повторяющимся микрооперациям сложения и сдвига. Сложение ЧП производится в сумматоре с двумя входами, поэтому их сумма накапливается постепенно, на каждом шаге.
Различают следующие методы умножения (рис. 4.8):
-
Мм
-
начиная с младших разрядов множителя и сдвигом суммы ЧП вправо;
-
начиная со старших разрядов множителя и сдвигом множимого вправо;
БУ
Для реализации любого метода схема включает в себя регистр множимого Мм, регистр множителя Мт, сумматор с регистром сумматора для накопления суммы ЧП и блок управления БУ. При разрядности сомножителей, равной п, разрядность регистра множимого и сумматора зависит от метода умножения.
На каждом шаге умножения в БУ проводится анализ одной цифры множителя. В зависимости от ее значения БУ формирует сигналы для выдачи множимого в сумматор, если цифра множителя равна «1», а также сигналы сдвига на регистр множителя и множимого (или суммы ЧП).
Реализация методов 2 и 4 требует меньших аппаратурных затрат, так как при этом используется регистр множимого меньшей разрядности. Кроме того, при сдвиге множимого один из входов сумматора должен иметь удвоенную разрядность, что также увеличивает затраты на реализацию методов 1 и 3 (см. рис. 4.8, а, в). Анализ схем реализации методов 2 и 4 показывает, что затраты можно уменьшить, если использовать освобождающиеся разряды регистра множителя для записи уже сформированных разрядов произведения так, как это показано на рис. 4.8, б, г пунктирными линиями. При умножении используются методы со сдвигом ЧП (рис. 4.9).
При умножении чисел со знаками отдельно определяются модуль произведения и его знак. Знак произведения определяется суммированием по модулю 2 знаков сомножителей. Вычисление модуля произведения может выполняться в прямом или дополнительном коде.
Пример определения модуля произведения различными методами в ПК при умножении чисел Мм,0 = 10 (Мм2 = 1010) и Мт!0 = 13 (Мт2 = 1101) приведен в табл. 4.1.
Умножение в ПК требует преобразования кодов, если числа хранятся в памяти в ДК, поэтому чаще умножение выполняется непосредственно в ДК. При этом произведение ДК не всегда равно ДК произведения. В зависимости от сочетания знаков сомножителей необходимо определенным образом корректировать результат. Далее приводятся значения поправок при умножении дробных чисел с ФТ.
1. Если Мм > 0 и Мт > 0, то Ммдк = |Мм( и Мт^ = |Мт|. Тогда Ммдк х МтДк = |Мм| х )Мт| = |Мм х Мт| = (Мм х Мт)дк.
Коррекция не нужна.
2. Если Мм > 0 и Мт < 0, то Ммдк = |Мм| и Мтдк = 1 - |Мт|. Тогда Ммдк х МтЛк = |Мм| х (1 - |Мт|) = |Мм| - |Мм| х |Мт|. Так как (Мм х Мт)дк= 1 - |Мм х Мт| = 1 - |Мм| х |Мт|, то нужна
коррекция и величина корректирующей поправки А = 1 - |Мм[, т. е. дополнению множимого, взятого со знаком минус.
3. Если Мм < 0 и Мт > 0, то Ммдк = 1 - |Мм| и Мт^ = |Мт| Тогда Ммдк х Мт^ = (1 - |Мм|) х ]Мт| = |Мт| - |Мм х Мт|. Так как (Мм х Мт)дк= 1 - |Мм х Мт| = 1 - |Мм| х |Мт|, то нужна
коррекция и величина корректирующей поправки А = 1 - |Мт|, т. е. дополнению множителя, взятого со знаком минус.
4. Если Мм < 0 и Мт < 0, то Ммдк = 1 - |Мм( и Мт^ = 1 - |Мт| Тогда Ммдк х МтЛк = (1 - |Мм|)(1 - |Мт|).= 1 - |Мт| - |Мм| +
|Мм х Мт|.
Так как (Мм х Мт)дк = |Мм х Мт| = |Мм| х |Мт|, то нужна коррекция и величина корректирующей поправки А = |Мм| + |Мт| -- 1. Так как вычитание единицы приводит только к изменению знакового разряда, а знак определяется отдельно, то величина поправки может быть принята равной сумме модулей множимого и множителя, т.е. А = |Мм| + |Мт|. Поправки вводятся на дополнительном шаге умножения.
Примеры умножения чисел в ДК по методу 2 приведены в табл. 4.2:
|Мм| = 1010; (-|Мм|)дк = 0110; |Мт) = 1101; (-|Мт|)дк = ООП.