Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций по Теории Автоматов.doc
Скачиваний:
172
Добавлен:
01.05.2014
Размер:
1.09 Mб
Скачать

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

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

[C]д = [A]д (b12-1+b22-2+…+bn2-n-1)=( [A]д *2-n) (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n)=

=[A ]д* (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n)=

=SgB([ A ]д+b1([A ]д 2n-1)+b2([A ]д 2n-2 )+…+bn-1([A ]д 2)+bn [A ]д

(8)

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

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

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

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

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

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

Таблица 5 Умножение на ДСДК, схема 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.

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

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

[C]о = [A]о (b12-1+b22-2+…+bn2-n-SgB +SgB 2-n)=

( [A]o *2-n) (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n + SgB)=

=[A ]o* (b12n-1+b2 2n-2+…+bn-1 2+bn –SgB 2n + SgB)=

=SgB([ A ]o 2n + b1([A ]o 2n-1)+b2([A ]o 2n-2 )+…+bn-1([A ]o 2)+bn [A ]o +SgB [A]o.

(9)

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

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

СМ

РгА

РгВ

СТ

Комментарии

1.1111 1111

+1.1111 0010

1.1111 0001

+ 1

1.1111 0010

1.1111 0010

1.0100

4

СМ:=0, РгА:= [A’]o, РгВ:=[B]o, СТ:=4,

SgB=1?ДА

Выполняем первую коррекцию. СМ:=СМ+РгА,

1.1110 0101

-1.010

3

РгВ[4]=1? НЕТ

Пропускаем такт подсуммирования.

СТ=0? НЕТ

РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,

1.1100 1011

--1.01

2

РгВ[4]=1? НЕТ

Пропускаем такт подсуммирования.

СТ=0? НЕТ

РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,

1.1111 0010

+1.1100 1011

1.1011 1110

РгВ[4]=1? ДА

СМ:=СМ+РгА, здесь уже подсуммирована единица, спадающая со знакового разряда.

1.1001 0111

---1.0

1

СТ=0? НЕТ

РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,

1.0010 1111

----1.

0

РгВ[4]=1? НЕТ

Пропускаем такт подсуммирования.

СТ=0? НЕТ

РгА:=L(1) РгА, РгВ:=R(1)РгВ, СТ:=СТ-1,

1.1011 1110

+0.1101 0000

0.1000 1111

СТ=0? ДА

РгВ[4]=1 ДА

Выполняем вторую коррекцию СМ:=СМ+РгА,

Конец. В сумматоре находится результат умножения.