11 Умножение двоичных чисел
11.1 Методы умножения бинарных чисел
Рассмотрим основные способы выполнения операции умножения для различных систем cчисления. Самым распространенным способом умножения чисел является способ поразрядного умножения множимого на множитель, начиная с младшего разряда — 1-й способ, начиная со старшего разряда – 2-способ.
Анализ способов умножения чисел в десятичной системе счисления показывает, что операция умножения состоит из поразрядного умножения множимого на множитель с переносом переполнения в старший разряд, сдвига частных произведений на один разряд влево (вправо), суммирование частных произведений.
В двоичном счислении эта задача значительно упрощается, т.к. умножать поразрядно нет необходимости. В самом деле, если умножать множимое на «1», то это повторение множимого со сдвигом на один разряд вправо (влево), а на «0» — записываются одни нули со сдвигом.
В обоих случаях операция умножения состоит из ряда последовательных операций сдвига и сложения частных произведений. Таким образом, операция умножения сводится к сложению частных произведений, которые получаются из множимого с соответствующим сдвигом или нулей, если в разряде множителя «нуль», или множимого, если в разряде множителя 1. Рассмотрим, как производит умножение компьютер.
11.2 Умножение чисел с фиксированной запятой на дспк
Запишем машинное изображение множимого и множителя в форме с фиксированной запятой в прямом коде. Anp=SgA,α1α2. αn; Bпр=SgB,b1b2. bn. Тогда, их произведение запишется как Cnp=Sgc,с1с2. сn, где Sgc= SgASgB, где — знак сложения по mod2. (1)
Таким образом, при использовании ДСПК, знак произведения определяется отдельно от цифровой части, затем выполняется операция умножения. Она выполняется в соответствии с заданной структурой множительного устройства (см. например, рисунок 11.1).
Рисунок 11.1-Структурная схема устройства умножения
По методу 2 умножение начинается с младшего разряда и сдвигается вправо сумма частных произведений.
Пример. Умножить числа Апр = 1,11010 = — 26; Впр, = 0,11001 = 25, С= -650.
Решение: Определяется знак произведения 1 0 =1
Зададим: 1) сумматор имеет 10 разрядов (без знака).
2) регистры имеют по 5 разрядов (без знака).
Последовательность действий представим таблицей 11.1.
Для упрощения записи таблиц, принимаем следующие условные обозначения:
-оператор := присваивания значения (блоку слева присваивается значение, указанное справа от операнда);
-оператор сдвига содержимого, например, сдвиг регистра А вправо на один разряд;
-обозначения, например, [См] — содержимое сумматора;
-обозначение И. П. — исходное положение;
-обозначения Апр., Впр. — цифровая часть множимого и множителя в прямом коде.
Если при умножении возникает единица переноса из старшего разряда, то ее сохраняют путем сдвига т.е. необходимо предусматривать в цифровом автомате стробирование сигнала переполнения для выработки сдвига на один разряд.
Этот способ умножения получил наибольшее распространение в практике цифровых автоматов.
11.3 Умножение чисел с плавающей запятой
Так как числа с плавающей запятой представляются мантиссой и порядком, то выполнение операции умножения состоит из двух действий:
Результат умножения может получиться денормализованным, поэтому требуется проверка на нормализацию числа и, при необходимости, его нормализация с соответствующей коррекцией порядка результата. Устройство умножения чисел с плавающей запятой представлено автоматом со структурой рисунка 11.2.
Пример. А= – 0,11001*2 –-3 ; В=0,10011*2 1
Сложение порядков производим в обратном коде, См. — 10 разрядов, Рг. — 5 разрядов. Умножение мантисс приведено в таблице 11.2. Определим значение порядка
Так как мантисса результата не удовлетворяет нормализации слева, т.е. δ=1,γ=0, то производится сдвиг мантиссы влево на один разряд mC = 1,1110110110 и коррекция порядка
В машинном виде будет соответствовать коду 11.1110110110.11.11, при условии выделения для порядка всего двух разрядов.
Примечание. Точки, разделяющие знак мантиссы, мантиссу, знак порядка, порядок в машинном коде не проставляются.
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
Источник
Практическая работа №4 операция умножения чисел в ЭВМ
Практическая работа №4
Операция умножения чисел в ЭВМ
Целью работы является изучение умножения чисел как с фиксированной, так и с плавающей точкой в ЭВМ.
2. Теоретическая часть
2.1. Умножение чисел в двоичной системе счисления.
Наиболее просто умножение выполняется в прямом коде, независимо от того, являются ли операнды целыми или дробными числами. В ЭВМ с фиксированной точкой умножение реализуется в два этапа.
Первый этап заключается в определении знака произведения с помощью сложения знаковых цифр сомножителей по модулю два, где 0 – соответствует плюсу, а 1 – минусу (табл. 2.1.1).
Сложение по модулю два
По-другому, это эквивалентно
На втором этапе производится перемножение модулей сомножителей, затем в случае необходимости округления полученного модуля произведения, после чего к модулю результата приписывается его знак, определенный на первом этапе.
Умножение производится по обычным правилам арифметики, согласно двоичной таблицы умножения (табл. 2.1.2).
Традиционная схема умножения похожа на известную из школьного курса процедуру записи «в столбик». Вычисление произведения двух n-разрядных двоичных чисел без знака сводится к формированию частичных произведений (ЧП) по одному на каждую цифру множителя, с последующим суммированием полученных ЧП. Перед суммированием каждое частичное произведение должно быть сдвинуто на один разряд относительно предыдущего.
2.2. Умножение двоичных чисел в ЭВМ. Машинный метод.
Умножение двоичных чисел сводится к операциям сдвига на один двоичный разряд влево и повторения первого сомножителя в тех разрядах, где второй сомножитель содержит 1, и сдвига без повторения в разрядах с 0. Сдвиг всегда чередуется со сложением, поскольку для выполнения операций имеется всего два регистра (два места для записи чисел). Другими словами, реализации отдельной операции умножения в процессоре не требуется.
Как и в операции сложения, при умножении чисел с ограниченной разрядной сеткой может возникнуть переполнение.
Перемножение двух n-разрядных двоичных чисел P=A*B приводит к получению результата, содержащего 2n битов. Таким образом, алгоритм умножения предполагает последовательное выполнение двух операций – сложения и сдвига. Суммирование ЧП обычно производится не на завершающем этапе, а по мере их получения. Это позволяет избежать необходимости хранения всех ЧП, то есть сокращает аппаратурные издержки. Устройство умножения предполагает наличие регистров множимого, множителя и суммы частичных произведений, а также сумматора ЧП и, возможно, схем сдвига (если операция сдвига не реализована иным способом).
Существуют следующие алгоритмы умножения:
1. Алгоритм сдвига вправо — начиная с младших разрядов множителя, со сдвигом суммы ЧП вправо и при неподвижном множимом.
2. Алгоритм сдвига влево — начиная со старших разрядов множителя, со сдвигом суммы ЧП влево и неподвижном множимом.
Рассмотрим пример умножения двоичных чисел в ЭВМ.
Выполнить умножение чисел A = 101112 и B = 1012 в двоичной системе счисления.
Умножение выполняется в несколько этапов:
1. Впишем множимое A, допустим в 8-ми разрядный регистр, начиная с младших разрядов (нумерация разрядов начинается с нуля). В недостающие разряды записываем нули.
2. Впишем множитель В в 8-ми разрядный регистр, начиная с младших разрядов. В недостающие разряды записываем нули.
3. Подготовим (обнулим) регистр результата C удвоенной разрядности (16 бит). Произведение содержит в два раза больше разрядов чем исходные сомножители.
4. Дальше выполняется следующий цикл:
4.1. Анализируем очередной разряд множителя В (начинаем с младших), если он «1», то прибавляем множимое A к старшим разрядам регистра С, результат снова в С. Если очередной разряд множителя «0», пропускаем данный шаг.
4.2. Сдвигаем содержимое регистра С на один разряд вправо. При этом крайний левый (старший) разряд заполняется нулем. Но если перед этим была операция сложения, во время которой возник перенос из старшего разряда, то тогда крайний левый разряд заполняется единицей.
4.3. Действия, описанные в п. п. 5.1 и 5.2,повторяютсядо тех пор не будут проанализированы все разряды множителя.
В итоге процесс умножения выглядит следующим образом:
где «+А» — числоА прибавляется к регистру C; «—>»содержимое регистра C сдвигается на один разряд вправо; «=» — показывается значение частичного произведения полученного после сложения, которое заносится в регистр С.
5. Определяется знак результата. Если знаки исходных сомножителей одинаковы, то результирующее произведение положительно и наоборот. В данном случае знаки совпадают, следовательно результирующее произведение положительно.
В итоге получается ответ:
Выполнить умножений и деление чисел согласно варианту задания.
4.1. Выполнить умножение чисел A и B в двоичной системе счисления, используя ручной метод. Показать решение.
4.2. Выполнить умножение чисел A и B двоичной системе счисления, используя машинный метод. Разрядность регистров выбрать самостоятельно. Показать решение.
Источник
III . Умножение двоичных чисел.
Процесс умножения чисел в двоичной системе счисления прост, так как разрядами множителя могут быть либо «0», либо «1», и, следовательно, частичным произведением в каждом такте цикла умножения будет либо «0», либо множимое. Поэтому в цикле умножения двоичных чисел три элементарных операции:
1. анализ цифры очередного разряда множителя;
2. суммирование множимого с накопленной суммой частичных произведений, если цифра множителя «1»;
3. сдвиги в каждом такте умножения.
Умножение можно выполнять как с младших, так и со старших разрядов множителя, со сдвигом, как частичной суммы, так и множимого в процессе умножения. Этим объясняется существование четырех способов умножения чисел.
Следует обратить внимание на то, что множитель сдвигается во всех способах умножения, так как в каждом такте анализируется очередной разряд: при умножении с младших разрядов сдвиг вправо (в сторону младших разрядов), при умножении со старших разрядов множитель сдвигается влево. И еще одна особенность, позволяющая легко запомнить способы умножения: сумма частичных произведений обычно сдвигается в ту же сторону, что и множитель, а множимое сдвигается навстречу множителю, т.е. в противоположную сторону.
|