Умножение чисел с фиксированной запятой

Умножение чисел с фиксированной запятой

Схема Горнера в этом случае имеет вид:

[C]д = [A]д (b12 -1 +b22 -2 +…+bn2 — n -1)=( [A]д *2 — n ) (b12 n -1 +b2 2 n -2 +…+bn-1 2+bn –SgB 2 n )=[A ` ]д´(b12 n -1 +b2 2 n -2 +…+bn-1 2+bn –SgB 2 n )= =SgB([`A ‘ ]д2 n )+b1([A ‘ ]д2 n-1 )+b2([A ‘ ]д2 n-2 )+…+bn-1([A ‘ ]д2)+n [A ‘ ]д (10)

Из выражения (10) следует, что

1. множимое в начале выполнения операции сдвигается на n разрядов вправо; поэтому регистр А должен иметь двойную точность;

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

3. разряды множителя анализируются, начиная с младшего разряда;

4. множимое в каждом цикле умножения сдвигается на один разряд влево.

Пример. Пусть А=0,1101, В=-0,1011. С учетом сказанного выше, в РгА после сдвига на n=4 разрядов вправо находится число 0,0000 1101, дополнительный код множителя находится в регистре В. [B]д =1.0101. Процедура выполнения умножения приведена в таблице 10.

Таблица 10 Умножение на ДСДК, схема 3

СМ РгА РгВ СТ Комментарии
0.0000.0000 0.0000.1101 1.0101 СМ:=0, РгА:= [A ‘ ]д, РгВ:= [В]д, СТ:=4,
+0.0000.1101 0.0000.1101 РгВ[4]=1? ДА СМ:=СМ+РгА,
0.0001 1010 -1.010 СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,
0.0011 0100 —1.01 РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. Выполняем сдвиги РгА и РгВ и декремент счетчика.
0.0000 1101 +0.0011 0100 0.0100 0001 РгВ[4]=1? ДА СМ:=СМ+РгА,
0.0110 1000 —1.0 СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,
0.1101 0000 —-1. РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. Выполняем сдвиги РгА и РгВ и декремент счетчика.
0.0100 0001 +1.0011 0000 1.0111 0001 СТ=0? ДА Проверяем значение знака В. Так как SgB=1, выполняем коррекцию. СМ:=СМ+Рг`А,

Ответ: [C]д=1.0111 0001. Или в естественной записи С= -0.1000 1111.

Умножение двоичных чисел с фиксированной запятой на ДСОК, схема 3

Схема Горнера в этом случае имеет вид:

[C]о = [A]о (b12 -1 +b22 -2 +…+bn2 -n -SgB +SgB 2 -n )= ( [A]o *2 -n ) (b12 n-1 +b2 2 n-2 +…+bn-1 2+bn –SgB 2 n + SgB)= =[A ‘ ]o* (b12 n-1 +b2 2 n-2 +…+bn-1 2+bn –SgB 2 n + SgB)= =SgB([`A ‘ ]o 2 n )+b1([A ‘ ]o2 n-1 )+b2([A ‘ ]o2 n-2 )+…+bn-1([A ‘ ]o2)+bn [A ‘ ]o+SgB[A ’ ]o (11)

Из (11) заключаем, что в этом случае вначале выполняется коррекция +SgB[A ’ ]o, а затем все происходит так же, как при умножении на ДСДК. Пример выполнения умножения приведен в таблице 11.

Таблица 11 Умножение двоичных чисел на ДСОК, схема 3

СМ РгА РгВ СТ Комментарии
1.1111 1111 +1.1111 0010 1.1111 0001 + 1 1.1111 0010 1.1111 0010 1.0100 СМ:=0, РгА:= [A’]o, РгВ:=[B]o, СТ:=4,
SgB=1?ДА Выполняем первую коррекцию. СМ:=СМ+РгА,
1.1110 0101 -1.010 РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,
1.1100 1011 —1.01 РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,
1.1111 0010 +1.1100 1011 1.1011 1110 РгВ[4]=1? ДА СМ:=СМ+РгА, здесь уже подсуммирована единица, спадающая со знакового разряда.
1.1001 0111 —1.0 СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,
1.0010 1111 —-1. РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,
1.1011 1110 +0.1101 0000 0.1000 1111 СТ=0? ДА РгВ[4]=1 ДА Выполняем вторую коррекцию СМ:=СМ+Рг`А, Конец. В сумматоре находится результат умножения.
Читайте также:  Опера синхронизация экспресс панели
| следующая лекция ==>
Умножение двоичных чисел с фиксированной запятой на ДСДК, схема 2 | Деление двоичных чисел с фиксированной запятой с восстановлением остатка

Дата добавления: 2019-04-03 ; просмотров: 161 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

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

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

Произведение двух n – разрядных чисел с фиксированной запятой может иметь 2*n значащих разрядов. Поэтому необходимо предусмотреть возможность формирования в АЛУ произведения, имеющего двойную длину.

Структура АЛУ для выполнения умножения должна содержать регистры множимого, множителя и сумматор частичных произведений.

В зависимости от способа формирования суммы частичных произведений различают четыре метода выполнения умножения (рисунок 1):

1) начиная с младших разрядов множителя со сдвигом суммы частичных произведений вправо и при неподвижном множимом, регистры и сумматор частичных произведений имеют одинарную длину младших разрядов множителя со сдвигом суммы частичных произведений вправо и при неподвижном множимом;

2) начиная с младших разрядов множителя со сдвигом множимого влево и неподвижной сумме частичных произведений, регистр множимого и сумматор частичных произведений имеют двойную длину;

3) начиная со старших разрядов множителя со сдвигом суммы частичных произведений влево и неподвижным множимым, сумматор частичных произведений имеет двойную длину, регистр множителя и множимого одинарной длины;

4) начиная со старших разрядов множителя, со сдвигом вправо множимого и неподвижной сумме частичных произведений, сумматор частичных произведений и регистр множимого имеют двойную длину.

Если необходимо получить произведение двойной длины, то наиболее экономичным является первый метод; если достаточно иметь произведение одинарной длины, то целесообразно использовать либо первый, либо четвертый метод умножения.

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

Произведение в формате двойной длины имеет один знаковый разряд и 2*n-1 цифровых разрядов. Результат умножения n – разрядных чисел, где n-1 цифровых разрядов, содержит 2*(n-1)=2*n-2 цифровых разрядов.

При данном методе регистр множителя в АЛУ и сумматор частичных произведений должны иметь цепи сдвига вправо. Регистр множимого может не иметь цепей сдвига.

Читайте также:  Лучший биткоин кошелек для андроид

Структурная схема АЛУ для умножения n – разрядных целых двоичных чисел со знаком представлена на рисунке 2.

Схему АЛУ, выполняющего умножение двух чисел с фиксированной запятой, составляют:

§ входной регистр множимого Pr1;

§ регистры множителя Pr2 и Pr2 ’ , на которых с помощью косой передачи вправо выполняется сдвиг множителя вправо;

§ триггеры знаков ТгЗн1 и ТгЗн2 для хранения знаков множимого множителя соответственно;

§ сумматор См для образования суммы частичных произведений;

§ регистр PrA для формирования частичного произведения;

§ регистр PrB для накопления суммы частичных произведений;

§ регистр сумматора PrСм, где образуется новое значение суммы;

§ счетчик циклов СчЦ.

Умножение чисел с фиксированной запятой можно разделить на следующие этапы:

§ вычисление сумм частичных произведений;

§ коррекция результата в формате двойной длины.

Рисунок 1 – Возможные методы выполнения операции умножения

АЛУ работает следующим образом:

1. Первоначально в первом такте на Pr1 поступает множимое, одновременно с приемом множимого обнуляется PrB, хранящий сумму частичных произведений, а в СчЦ заносится число обрабатываемых цифровых разрядов множителя;

2. Во втором такте на Pr2 поступает множитель;

3. В зависимости от значения (0 или 1) младшего разряда модуля множителя к частичному произведению прибавляется либо 0, либо модуль множимого, для чего соответствующее значение присваивается PrA; на сумматоре См производится суммирование PrA и PrB; полученная сумма сдвигается путем передачи кода с выхода сумматора на регистр сумматора PrСм со сдвигом на один разряд вправо, и затем передается в регистр PrB.

4. Содержимое регистра Pr2 переносится в Pr2 ’ со сдвигом вправо на один разряд. Разряд «0» в Pr2 ’ оказывается свободным и в него заносится младший, (n — 1) – й, разряд суммы, выходящий при сдвиге за пределы разрядной сетки.

5. Содержимое Pr2 ’ переносится в Pr2 и тем самым завершается сдвиг множителя; содержимое СчЦ уменьшается на единицу и проверяется на равенство нулю.

6. Если СчЦ установится в нуль, нужно переходить к выдаче результата; в противном случае – переходить к анализу младшего разряда Pr2.

Когда СчЦ установится в 0, в PrСм и Pr2 будут содержаться соответственно старшие и младшие разряды модуля произведения, требующие сдвига на один разряд вправо для правильного расположения в формате двойного слова.

После выполнения этого сдвига результат операции из PrСм и Pr2 последовательно поступает на шину выхода.

Рисунок 3 – Алгоритм умножения чисел с фиксированной запятой

Пусть X=+125, Y= -12. Вычислить Z=X*Y=125*(-12)= -1500, где X,Y,Z – числа с фиксированной запятой.

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

В данном примере для представления чисел X и Y выделим 8 разрядов, причем старший разряд знаковый (7 циклов умножения).

Читайте также:  Как очистить историю поиска в эксплорере

Умножение чисел с фиксированной запятой представим в виде таблицы (Таблица 1 – Умножение чисел с фиксированной запятой).

Таблица 1 — Умножение чисел с фиксированной запятой

№ бл. СчЦ Рг1 Рг2 РгA РгB См РгСм Рг2’
№ бл. СчЦ Рг1 Рг2 РгA РгB См РгСм Рг2’

Результат умножения чисел в формате двойной длины представлен на рисунке 4.

Рисунок 4 — Число Z=X×Y=125×(-12)= -1500 с фиксированной

Умножение двоичных чисел чаще всего осуществляется в прямом коде. Знак произведения определяется путем сложения по модулю два знака сомножителей, что полностью соответствует известным правилам алгебры: 0*0=0, 0*1=1, 1*0=1, 1*1=0.

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

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

Множимое: X=-0,1101; [X]пр = 1,1101; множитель: Y=+0,1011; [Y]пр = 0,1011. Найти Z=X*Y, [Z]пр

Определение знака произведения: 3HZ =3HX*3HY = 1*0 = 1.

Определение цифровой части (модуля) произведения

Ограничение результата четырьмя разрядами и округление 1001. Результат:

Умножение двоичных чисел с плавающей запятой

Умножение чисел, представленных в форме с плавающей запятой, выполняются за 4 шага.

Определяется знак произведения путем сложения по модулю двух знаков сомножителей.

Определяется порядок произведения путем алгебраического сложения (с учетом знаков) порядков сомножителей по правилам сложения чисел с фиксированной запятой.

Определяется мантисса произведения путем умножения мантисс сомножителей по изложенным выше правилам для чисел с фиксированной запятой.

Нормализуется результат умножения мантисс сомножителей, если произошла денормализация.

Определение знака произведения: 3HZ = 3HX*3HY = 0*1=1.

Определение порядка произведения путем сложения порядков сомножителей в модифицированном дополнительном коде:

Определение модуля мантиссы произведения |mx| x |my| = |mz|:

Ограничивая результат шестью разрядами, имеем ненормализованное значение модуля мантиссы произведения |mz| = 010111

Нормализация результата умножения мантисс сомножителей путем сдвига модуля мантиссы произведения на один разряд влево и уменьшения порядка на единицу: |mz|=101110; pz = +010.

Результат операции Z=X*Y: [mz]пр = 1,101110; pz=+010; Z= -10,1110.

Ссылка на основную публикацию
Удобное компьютерное кресло отзывы
В общем, надоело мне с ноутбуком на кровати валяться, спину портить. Стол есть, 74см высотой. Сейчас сижу на офисном стуле,...
Тест эксель на собеседовании
Если вы хоть раз пытались устроиться на работу или же работаете на должности, в круг обязанностей которой входит принятие людей...
Тестирование cd и dvd дисков
В этой статье я опишу программу тест Nero CD DVD Speed, которая разработана компанией "Nero Softwsre AG". С помощью программы...
Удобный сайт для просмотра фильмов
Некоторые онлайн-кинотеатры радуют лицензионными бесплатными фильмами, однако за лучший контент придётся платить. В подборке Лайфхакера — несколько хороших сервисов с...
Adblock detector