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

1.6.1. Двоично-десятичное сложение в коде 8-4-2-1




1. 6. 1. Двоично-десятичное сложение в коде 8-4-2-1

В табл. 1. 3 представлено соответствие десятичных цифр и их обозначений в двоично-десятичном коде 8-4-2-1.                                                                    

Сформулируем  правила сложения в коде 8-4-2-1 на основе анализа числовых  примеров  в пределах  одной  декады  для десятичного и   двоично-десятичного кодов.

                                                              Таблица 1. 3        

Десятич. цифра

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

 

   1) 3+5=8   0 0 1 1 как видим, результаты совпадают

                        +0 1 0 1

                          1 0 0 0   

   2) 8+9=17    1 0 0 0

                        + 1 0 0 1

                        1 0 0 0 1 результат неправильный

                        + 0 1 1 0 выполняем коррекцию

                        1 0 1 1 1 теперь результат верен

  3) 6+8=14      0 1 1 0

                        + 1 0 0 0

                           1 1 1 0 сумма не совпадает

                        + 0 1 1 0 коррекция

                        1 0 1 0 0 результат совпал с десятичным примером.

Анализируя приведенные примеры, можно отметить следующие особенности.

В примере 1) двоичное сложение в пределах десятичной декады дает правильный результат, так как сумма меньше 9 ( меньше 1001 в двоично-дес. коде).

В примере 2) после двоичного сложения в декаде получается неправильный результат и возникает единица переноса в следующую декаду. Однако этот перенос является двоичным, а не десятичным, т. к. равен 16 единицам младшего разряда декады. Пример 3) также приводит к неправильному результату, так как получившаяся в декаде сумма чисел больше девяти. Для получения правильного результата в обоих примерах необходимо после двоичного сложения выполнить коррекцию. Для этого к полученной сумме добавляется число 6 ( 0110 ).

Сформулируем правила двоично-десятичного сложения:

- выполнить двоичное сложение внутри каждой декады с учетом возникающих между декадами переносов;

- переносы образуются из данной декады в следующих случаях:

если перенос возникает автоматически во время двоичного сложения, или если образовавшаеся сумма больше 9 (1001);

- к содержимому всех декад, из которых возникали переносы, прибавить для коррекции 6 ( 0110).

Выполним для примера по рассмотренным выше правилам сложение многоразрядных десятичных чисел в двоично-десятичном коде.

Выполним           S = А + В сначала в десятичном коде

                              А = 6 5 3 8 0 4

                           + В = 1 7 5 9 9 8

                              S = 8 2 9 8 0 2

    Теперь вычислим этот пример в двоично- десятичном коде.

                              1      1        1          1   дв. -дес. переносы

А = 0 1 1 0  0 1 0 1   0 0 1 1  1 0 0 0    0 0 0 0  0 1 0 0   

+В = 0 0 0 1   0 1 1 1   0 1 0 1   1 0 0 1    1 0 0 1   1 0 0 0  

    1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0   1 0 1 0 1 1 0 0 двоичная сумма

+ 0 0 0 0 0 1 1 0 0 0 0 0  0 1 1 0      0 1 1 0     0 1 1 0 коррекция

S = 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 дв. -дес. сумма

Как следует из этих числовых примеров результат сложения в двоично-десятичном коде совпадает с суммой, полученной при использовании десятичного кода.

1. 6. 2. Двоично- десятичное вычитание в коде 8-4-2-1

 Операцию вычитание в коде 8-4-2-1 можно реализовать, как и при двоичном вычитании, на основе прямого, обратного или дополнительного кодов.

В машинной арифметике, как известно, чаще всего применяется дополнительный код числа. Рассмотрим правила двоично-десятичного вычитания при использовании дополнительного кода на основе общих положений ( см. 1. 5. 2 ).

Прежде всего необходимо разработать методику нахождения дополнительного кода отрицательного числа, представленного в двоично- десятичном коде 8-4-2-1.

   Вычислим S = А – В. Примем для простоты, что А > 0, В > 0, А > В.

Сначала выполним вычитание в десятичном коде, используя машинные алгоритмы ПП и ПД ( см. раздел 1. 5 ). В обоих алгоритмах числа в памяти хранятся в в прямых кодах, в действиях сложения и вычитания участвуют только модули чисел. Знак результата определяется логическим путем.    

                    A =. 8 3 7 5 4

                  - B =. 2 5 4 9 6                                                       (1. 9)             

                    S =. 5 8 2 5 8                                   

    Заменим вычитание сложением в дополнительном коде. Будем искать псевдосумму  С = [А]п + [-В]д

Сначала в соответствии с правилами определим дополнительный код

     [-B]д = 1+ (- B ) = 1 – B = 1. 0 0 0 0 0

                                              -. 2 5 4 9 6                          (1. 10)                    

                                                . 7 4 5 0 4

Продолжим [А]п =. 8 3 7 5 4                                            (1. 11)

                 +[-B]д =  . 7 4 5 0 4                                     

                     С  =  1. 5 8 2 5 8

Анализируя численное значение псевдосуммы С в выражении (2. 1), видим, что слева от точки появилась цифра 1, которая представляет собой единицу переноса за пределы разрядной сетки и является признаком того, что результат положителен.  Поэтому

С =. 5 8 2 5 8 = S

и совпадает с результатом, полученным выше при вычитании в прямых кодах (1. 9).

   Для того, чтобы выполнить вычитание по алгоритму ПД, необходимо установить правила нахождения дополнительного кода для числа, представленного в двоично- десятичном коде. Причем в этих правилах не должно быть вычитания.

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

           B = { b1 b2  b3 …  bi …    bn }              (1. 12)

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

          [-B]д = { b1д b2д b3д … biд … bnд }                    (1. 13)

Анализ процедуры получения дополнительного кода десятичного числа (1. 10) показывает, что младшая цифра дополнительного кода получается вычитанием из десяти цифры младшего разряда исходного числа, а десятичные цифры всех остальных разрядов дополнительного кода получаются вычитанием из девяти соответствующих цифр прямого кода. Запишем выражение для вычисления цифры произвольного разряда дополнительного кода ( кроме i = n ) и преобразуем его, заменяя операцию вычитание сложением в дополнительном коде.

          [-bi]д = 9- bi = 16 – 7 – bi = ( 16 – bi ) + [ - 7 ]д16 =

       = [- bi ] o16 + ( 16 – 7 + 1 ) = [- bi ]o16  + 10                  ( 1. 14 )

Используя выражение ( 2. 4 ), запишем аналогичное соотношение для

            i = n      [- bn ]д = [ - bn ]o16 + 11

Сформулируем правила получения дополнительного кода для двоично- десятичного числа:

- инвертировать все двоичные цифры ( получить обратный код );

- ко всем декадам ( кроме последней справа ) прибавить 1010 = 10102;

- к последней декаде прибавить 1110 = 10112;

- в процессе сложения переносы внутри декады учитываются;

- возникающие междекадные переносы игнорируются.

Найдем  по этим правилам дополнительный  код двоично-десятичного числа

( - В ) = -- 25496 из примера (1. 10).

              В  = 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 1 0

             [В]о =   1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 1

                       + 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1

           [-B]д2-10 = 0 1 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 

             [-B]д10 =      7       4         5        0        4

Как видим, дополнительный код двоично-десятичного числа [-B]д2-10 равен дополнительному коду десятичного числа [-B]д10.                         

Вычислим теперь по правилам сложения в двоично-десятичном коде пример, выполненный в  (1. 11).  

                                1                  1   

           [A]п2-10 =     1 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 0

       + [-B]д2-100 1 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0

                         =  1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0

                         + 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0

                    С = 1 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0

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

               S2-10 =  0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0

S10 =. 5 8 2 5 8

Поделиться:





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



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