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

1.5.2. Алгоритмы типов ПД или  ПО




1. 5. 2. Алгоритмы типов ПД или  ПО

Настоящий алгоритм в основных чертах подобен рассмотренному выше алгоритму типа ПП. Основное отличие состоит в том, что операция вычитание заменяется сложением в дополнительном или обратном кодах (см. п. 1. 3). Отметим главные особенности этого алгоритма:

1) Числа в памяти хранятся в прямых кодах.

2) Вычисления выполняются над модулями чисел.

3) Действия над модулями определяются в соответствии с табл. 1. 1.

4)Если DM: =0, то ê Sê = ê Аê +ê Вê, далее проверяется наличие переполнения разрядной сетки сумматора, в противном случае

ЗНS=ЗНА и переход к п. 9), иначе

5) DM=1 и выполняется сложение модулей в дополнительном (обратном) кодах, вычисляется псевдосумма S* = ï Aï + [-ç Bç ]д.       

6) Анализируется значение переноса P0 из старшего разряда сумматора. Если P0=1, то результат положителен, S* =ï Sï и ЗНS=ЗНА, переход к п. 9), иначе

7) P0=0 и, значит, результат суммирования отрицателен, т. е. модуль суммы получился в дополнительном (или обратном) коде S*=[- ê S ê ]д, ЗНS=ЗНВ.

8) Следует преобразовать дополнительный (или обратный) код модуля суммы в прямой код.

  9) Запись [S]п в память.

    Выполним в соответствии с алгоритмом ПД пример алгебраического вычитания для двоичных чисел в форме с фиксированной запятой.

- Имеется два числа А≠ 0 В≠ 0   ê А ê < 1 ï Вï < 1

Вычислить  S=A-B;  A= -. 011011,   В = -. 110011;

1) Числа из памяти принимаются в АЛУ в прямом коде

   [A]п = 1. 011011        [B]п = 1. 110011

2) Определим действия над модулями DМ, пользуясь формулой (3. 1).

  Так как D: =1 ЗНA: =1 ЗНB: =1, то DM: =1.

3) Вычитание модулей заменяем сложением в дополнительном коде.

   Находим [-ê Bê ]д =   [-ê Bê ]о =. 0 0 1 1 0 0

                                                        + . 0 0 0 0 0 1

                                                            . 0 0 1 1 0 1

   Далее вычисляем псевдосумму S* = ê Aê п + [-ê Bê ]д        

                S* =. 0 1 1 0 1 1

                    + . 0 0 1 1 0 1

                        . 1 0 1 0 0 0  

4) Как видим, P0 = 0, следовательно, S* < 0 и S*= [- ê Sê ]д

5) Найдем прямой код модуля суммы по формуле

           ê S ê п = [ S* ] д = [S*]о =. 0 1 0 1 1 1

                                                      +. 0 0 0 0 0 1

                                            ê S ê п =. 0 1 1 0 0 0        

   6) Далее определим логическим путем по формуле (3. 2) знак результата.

 Так как  P0 = 0, то  ê А ê < ê В ê, , DM: = 1, ЗНА = 1. Следовательно  

ЗНS: = 0

 Сумма в прямом коде [S] п = 0. 011000; S =. 011000 

     Алгоритм алгебраического сложения и вычитания типа ПО в значительной степени совпадает с рассмотренным в этом разделе алгоритмом ПД.

 Имеют место отличия в п 5, где при DM: = 1 вычитание выполняется не в дополнительном, а в обратном коде, а также в п. 8 при переходе к представлению отрицательного результата из обратного кода в прямой код.  

     Оценим кратко основные характеристики алгоритма ПД.

 К достоинствам можно отнести хранение чисел в памяти в прямых кодах, благодаря чему отсутствует преобразование кодов при вводе и выводе чисел из ЭВМ. Кроме того, выполнение операции вычитание в дополнительном коде позволяет в АЛУ обойтись одним сумматором, что уменьшает оборудование по сравнению с алгоритмом ПП.  Недостатком является необходимость преобразования отрицательного результата из дополнительного кода в прямой перед записью в память, что  снижает быстродействие.       

1. 5. 3. Алгоритмы типов   ДД  или  ОО

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

    Вычисляем  S = A ± B; | A | < 1; | B | < 1; A ≠ 0; B ≠ 0

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

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

2) Операции сложения и вычитания выполняются в модифицированном дополнительном коде.

3) Преобразование в модифицированный код происходит при пересылке данных из памяти в АЛУ.  

4) Знаки чисел участвуют в вычислительных операциях и знак результата образуется автоматически после окончания вычислений.

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

6) Образовавшаяся сумма записывается в память в дополнительном коде.

Выполним пример вычислений по алгоритму ДД.

    S = A – B;                       A = -. 01101;      B =. 11011;      

    Коды чисел в ОЗУ         [А]д = 1. 10011;   [B]д = 0. 11011        

   В регистры АЛУ принимаются модифицированные коды чисел:

                    РГА: = [A]дм = 11. 10011; РГВ: = [B] дм = 00. 11011  

   ( Точка в кодах введена условно, чтобы отделить знаковые разряды).

    Так как действие вычитание, то D: = 1. Ищем псевдосумму в виде

        S* = [ РГА] пм + [ РГВ]д;     [ РГВ] дм = [РГВ] ом + 2-n         

                                   [РГА] пм =  11. 10011

                                   [РГВ] дм = 11. 00101

                                        S*      = 110. 11000     

Анализ цифр кода псевдосуммы слева направо показывает следующее. Крайняя левая цифра 1 представляет собой перенос из старшего разряда. Она выходит за пределы разрядной сетки. Два следующих разряда являются знаковыми. Цифры в этих разрядах не совладают. Следовательно, | S| > 1.

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

     S= A + B;      A=. 110101 = 53    B = -. 001101 = 13

  Так как ДЕЙСТВИЕ D: =0, А> 0, В < 0, то ищем псевдосумму

S* = А + В, следовательно: [A] пм = 00. 110101

                                            + [B] ом = 11. 110010

                                                S*     = 100. 100111

                                                           +                1

                                               [S] пм =   00. 101000 = 40

 Крайняя слева " 1" в численном значении S' является единицей переноса за пределы разрядной сетки и приводит к процессу " циклического переноса" который состоит в прибавлении 1=2-n к псевдосумме.                                                                              

       ( Выполним контроль в десятичном коде S = 53 – 13 = 40)

1. 6. Сложение и вычитание десятичных чисел

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

В табл. 1. 2 приведены для примера несколько двоично-десятичных кодов. Каждый код обозначается той последовательностью весов разрядов, которая ему соответствует.  Наиболее употребительным является код 8-4-2-1, который совпадает с обычным двоичным кодом.

                                                                                         Таблица 1. 2

Номер разряда

Двоично-дес. код

Код 3-3-2-1

Код 4-2-2-1

Код 5-2-2-1

Код 8-4-2-1

 

Поделиться:





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



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