На практике для перемножения целых со знаком применяют иные алгоритмы

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

На практике для перемножения целых со знаком применяют иные алгоритмы - student2.ru

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

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

На практике для перемножения целых со знаком применяют иные алгоритмы - student2.ru

Ускорение целочисленного умножения. Логические методы ускорения умножения

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

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

- методы, позволяющие уменьшить количество сложений в ходе умножения.

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

Алгоритм Бута

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

На практике для перемножения целых со знаком применяют иные алгоритмы - student2.ru , где m и k - номера крайних разрядов в группе из последовательностей единиц.

Например На практике для перемножения целых со знаком применяют иные алгоритмы - student2.ru . Это означает, что при наличии в множителе групп из нескольких единиц (комбинаций вида 011, 110), последовательное добавление к СЧП множимого с нарастающим весом от (2k до 2m) можно заменить вычитанием из СЧП множимого с весом 2k и прибавлением множимого с весом 2m+1.

Алгоритм предполагает выполнение трех операций: сдвиг, сложение и вычитание.

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

Алгоритм Бута сводится к перекодированию множителя из системы (0,1) в избыточную систему (-1,0,1), из-за чего его часто называют перекодированием Бута:

1 –означает добавление множимого к сумме частичных произведений (СЧП);

-1 – вычитание множимого;

0 –не предполагает никаких действий.

Реализация алгоритма предполагает последовательный справа налево анализ пар разрядов множителя bibi-1 (для i=0 bi-1считается равным 0).

На практике для перемножения целых со знаком применяют иные алгоритмы - student2.ru

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

На практике для перемножения целых со знаком применяют иные алгоритмы - student2.ru

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