Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Поясним табл. 1.5. В первом такте умножения рассматривается первая пара разрядов множителя bnbn+1 = b3b4 = 10, во втором такте – вторая пара – b2b3 = 11, в третьем такте – пара b1b2 = 01, в четвертом такте – пара b0b1 = 10. Следует также обратить внимание




Поясним табл. 1. 5. В первом такте умножения рассматривается первая пара разрядов множителя bnbn+1 = b3b4 = 10, во втором такте – вторая пара – b2b3 = 11, в третьем такте – пара b1b2 = 01, в четвертом такте – пара b0b1 = 10. Следует также обратить внимание, что при сдвиге суммы частных произведений вправо цифра в разряде знака не изменяется (так называемый, арифметический сдвиг). В последнем такте после суммирования сдвиг вправо не выполняется (вес разряда b0 = 20).

Как видно из табл. 1. 5, произведение отрицательное, получилось сразу в дополнительном коде и равно значению, которое было вычислено для контроля перед началом умножения по рассматриваемому алгоритму.

 

                                                            

                                                             Таблица 1. 5

bi, bi+-1 Сi, Si Пояснения
    0. 000000 +1. 001 1. 001000 1. 100100   1. 110010   C0=0 C1=[-А]д C0+C1 (C0+C1)*2-1= S1   C2=0 S1*2-1= S2
    + 0. 111 10. 101010 0. 010101   1. 001 1. 011101   C3= [А]пр C3+S2 (C3+S2)*2-1= S3 C4= [-A]д [C]д=C4+S3

1. 9. Деление двоичных чисел

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

    C =A / B; |A| < 1; |B| < 1; A ≠ 0; B ≠ 0.

   Используются два основных способа:

- деление чисел, представленных в прямых кодах;

- деление чисел, представленных в дополнительных кодах.

         1. 9. 1. Операция деления в прямых кодах

Отметим следующие основные особенности алгоритма:

1) К началу деления числа должны быть представлены в прямых кодах;

2) Операция деления выполняется над модулями;

3) Знак частного определяется логическим путем;

4) Операция сравнения модулей может выполняться с использованием любого из рассмотренных выше способов вычитания;

5) Алгоритм в основных чертах соответствует алгоритму деления вручную. Основное отличие состоит в том, что на каждом шаге деления вместо сдвига влево частичной разности (как это делается при ручном счете) сдвигается вправо делитель.

6) На каждом i-том шаге сравниваются по модулю частичная разность Ri и делитель |Bi|. При этом последовательно будут получаться цифры частного.

    Если | Ri|< |B|, то C[i]=0; | Ri+1|=| Ri|.

    Если | Ri|≥ |B|, то C[i]=1; | Ri+1|=| Ri|-|Bi|,

    где Ci — цифра частного, полученная на i-том шаге.

    Предлагаемый алгоритм рассмотрим подробно на числовом примере

А=-3/16 [А]п=1. 0011; |A|=. 0011

 B=12/16 [В]п= 0. 1100; |B|=. 1100

        Операцию сравнение будем выполнять в дополнительном модифицированном коде, для этого запишем       [-|B|]дм = 11. 0100

Пример запишем в виде таблицы 1. 6.

                                                             Таблица 1. 6

№ такта Сравнение | Ri|-|B|=| Ri|+[-| B|]д Пояснения
Такт “0” 00. 0011 +11. 0100 11. 0111  R0=|A|; B0= [-B]д [-|B|]д |R0|< | B0|; С[0]=0; Деление возможно
Такт “1” 00. 0011 +11. 1010 11. 1101 R1=|А0| [-|B1|]д =[-|B0|]д*2-1 |R1|< | B1|; С[1]=0;
Такт “2” 00. 0011 +11. 1101 00. 0000 R2=|А0| [-|B2|]д =[-|B1|]д*2-1 |R2|=| B2|; С[2]=1;          

 

 

        

 

 

    Как следует из этого пример, на очередном такте сравнения сдвигается вправо на 1 разряд делитель (умножается на 2-1). Цифры частного получаются, начиная со старшего разряда, и заносятся в регистр результата с помощью операции сдвига влево.

    Поскольку после второго такта частичная разность R3=0, очевидно, что следующие цифры частного также будут нули.

    Итак, |С|= 0. 0100 = 1/4.

Знак произведения — отрицательный, окончательный ответ:     С = 1. 0100.

1. 9. 2. Операция деления в дополнительных кодах

  Особенности алгоритма:

1) Делимое и делитель хранятся в памяти в дополнительных кодах

и в этом же виде принимаются в АЛУ;

2) Операция вычитание выполняется по алгоритму ДД в дополни-

тельном модифицированном коде;

3) Цифры знака частного получаются автоматически в процессе деления на нулевом и первом тактах сравнения;  

4) Переполнение разрядной сетки определяется по несовпадению

цифр в знаковых разрядах.

5) Результат записывается в память без всяких преобразований.

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

7) Вычисляем C=A / B.

     Правила на нулевом такте сравнения:

    если ЗНА = ЗНВ, то С0 =0 R1 = А – В,

    если ЗНА ¹ ЗНВ, то С0 = 1 R1 = А + В.  

      Правила на всех последующих i – тых тактах сравнения

    если ЗНRi = ЗНВ, то Сi = 1 R i+1  = R i • 2 - В

    если ЗНRi ¹ ЗНВ, то Сi = 0 R i+1 = Ri • 2 + В    

Рассмотрим пример деления чисел, представленных в дополни

тельном коде, в соответствии с приведенным алгоритмом.

  Зададим исходные данные для наглядности в десятичном коде.

    С= А / В А= 15 / 32  В= - 24 / 32  очевидно С = -5 / 8.

Представим эти числа в двоичном дополнительном коде, то есть

в том виде, в котором они хранятся в ОЗУ и вводятся в регистры АЛУ.

     [РГА]пм: = [А]дм =00. 01111  [РГВ]пм: =[В]дм = 11. 01000

( Условная точка отделяет знаковые разряды. )

  Так как в соответствии с алгоритмом делитель должен либо складываться с остатком, либо вычитаться из остатка, то заготовим прямой и дополнительный коды делителя.

   Итак, в первом случае будем прибавлять [РГВ]мп = 11. 01000,

    во втором - будем использовать       [РГВ]мд = 00. 11000

  Процесс вычислений представим в виде табл. 1. 7.

В нашем примере вычисления выполняются с точностью до 5-ти двоичных разрядов после запятой. В столбце Ci последовательно получаем цифры частного, начиная со старших разрядов в дополнительном модифицированном коде.               

      [C]мд =11. 01011

для проверки запишем результат в прямом коде

     [C]п = 1. 10101       

Переведем результат в десятичный код:

     С = - 21/32 ~ -5/8

Как видно из таблицы, произведение отрицательное, получилось сразу в дополнительном коде и равно значению, которое было вычислено для контроля перед началом умножения по рассматриваемому алгоритму.

 

 

Таблица 1. 7

Такт Сравнение знаков Вычисления Пояснение Сi
ЗНА ¹ ЗНВ 00. 01111 +11. 01000 РГВ 11. 10111 A     R1 С0 = 1
3НR1 = 3НВ 11. 01110 + 00. 11000 00. 00110 R1 * 2   R2 C1 = 1
3НR2 ¹ 3HB 00. 01100 + 11. 01000 11. 10100 R2 * 2   R3 C2 = 0
3HR3 = 3HB 11. 01000 + 00. 11000 00. 00000 R3 * 2   R4 C3 = 1
3HR4 ¹ 3HB 00. 00000 + 11. 01000 11. 01000 R4 * 2   R5 C4 = 0
3HR5 = 3HB 10. 10000 + 00. 11000 11. 01000 R5 * 2   R6 C5 = 1
3HR6 = 3HB 10. 10000 R6 * 2 C6 = 1
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...