Умножение двоичных чисел с фиксированной запятой на ДСДК, схема 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]д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 СМ:=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) (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]o2n-1)+b2([A]o2n-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 ДА Выполняем вторую коррекцию СМ:=СМ+Рг`А, Конец. В сумматоре находится результат умножения.

 

 








Дата добавления: 2019-04-03; просмотров: 612;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.