Умножение двоичных чисел с фиксированной запятой на ДСОК, схема 2
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

[C]o=[A]o ´ (b12-1+b22-2+…+bn2-n – SgB + SgB2-n)= =SgB[ ` A]o+2-1(b1 [A]o+2-1 (b2[A]o+…+2-1(bn [A]o+SgB[A]o+0))…) (9)

При сложении в обратном коде единица, спадающая со знакового разряда подсуммируется в младший разряд произведения в том же такте. Поэтому в этой схеме требуется двойная точность сумматора и РгА. Рассмотрим пример умножения, приняв следующие значения операндов: А=-0.1101, В=-0.1011. В соответствии с изложенным выше, коды операндов имеют вид:

[A]o=11.0010 1111, [B]o=1.0100. Процедура умножения в соответствии с алгоритмом (7) приведена в таблице 9.

Таблица 9 Умножение на ДСОК, схема 2

СМ РгВ СТ Комментарии

11.1111 1111

+ 11.0010 1111

11.0010 1110

+                    1

11.0010 1111

1.0100 4 СМ:=0, РгА:=[A]om|1111, РгВ:=[B]o, СТ:=4,
    SgB=1? Да Выполняем первую коррекцию. СМ:=СМ+РгА,
11.1001 0111 1 1.010 3 РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. Выполняем сдвиги. РгВ:=R(1)РгВ, СМ:=R(1)СМ, СТ:=СТ-1,

 

 

11.1100 1011

+   11.0010 1111

10.1111 1010

+                  1

10.1111 1011

11 1.01 2 СТ=0? НЕТ РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. Выполняем сдвиги. РгВ:=R(1)РгВ, СМ:=R(1)СМ, СТ:=СТ-1,
    СТ=0? НЕТ РгВ[4]=1? ДА СМ:=СМ+РгА,
11.0111 1101 111 1.0 1 Выполняем сдвиги. РгВ:=R(1)РгВ, СМ:=R(1)СМ, СТ:=СТ-1,
11.1011 1110 +00.1101 0000 00.1000 1110 +                     1 00.1000 1111 1111 1. 0 СТ=0? ДА Проверяем значение знака РгВ. РгВ[4]=1? ДА Выполняем коррекцию СМ:=СМ+Рг`А,

 

Ответ: [C]o=00.1000 1111.

Примечания.  

1. Так как при умножении всегда получается двойная точность результата, которой соответствует двойная точность сумматора, переполнение разрядной сетки не возникает. Однако в схеме 2 используется модифицированный код, так как переполнение разрядной сетки может возникать в частичных произведениях, которое устраняется при последующем сдвиге сумматора вправо. Во всех остальных схемах умножения применение модифицированного кода не требуется.

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

 

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

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

[ C ]д = [ A ]д ( b 1 2-1+ b 2 2-2+…+ bn 2- n -1)=( [ A ]д *2- n ) ( b 1 2 n -1 + b 2 2 n -2 +…+ bn -1 2+ bn – SgB 2 n )=[ A ` ]д ´ ( b 1 2 n -1 + b 2 2 n -2 +…+ bn -1 2+ bn – SgB 2 n )= =SgB([ ` A] д 2n)+b1([A] д 2n-1)+b2([A] д 2n-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 4 СМ:=0, РгА:= [A ]д, РгВ:= [В]д, СТ:=4,
+0.0000.1101  0.0000.1101       РгВ[4]=1? ДА СМ:=СМ+РгА,
  0.0001 1010 -1.010 3 СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,
  0.0011 0100 --1.01 2 РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. Выполняем сдвиги РгА и РгВ и декремент счетчика.
  0.0000 1101 +0.0011 0100 0.0100 0001       РгВ[4]=1? ДА СМ:=СМ+РгА,
  0.0110 1000 ---1.0 1 СТ=0? НЕТ РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,
  0.1101 0000 ----1. 0 РгВ[4]=1? НЕТ Пропускаем такт подсуммирования. Выполняем сдвиги РгА и РгВ и декремент счетчика.
0.0100 0001 +1.0011 0000 1.0111 0001       СТ=0? ДА Проверяем значение знака В. Так как SgB=1, выполняем коррекцию. СМ:=СМ+Рг`А,

 

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

 

Дата: 2018-12-28, просмотров: 269.