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

Операция сложения производится только над модулями двоично-десятичных чисел; знак результата определяется отдельно в результате анализа знаков слагаемых.

Сложение модулей десятичных чисел, имеющих одинаковые знаки, производится по следующим правилам:

1. Одно из слагаемых представляется в коде с избытком 6 (табл, 2.3), другое – в коде 8-4-2-1

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

3. Если при сложении тетрад получается результат больше 10, то автоматически вырабатывается перенос в следующую тетраду. В этом случае результат в данной тетраде получается в естественном двоично-десятичном коде 8-4-2-1 и коррекция для этой тетрады не требуется.

4. Если при сложении в каких – либо тетрадах переносы отсутствуют, то для получения истинного результата из кодов этих тетрад необходимо вычесть избытки 6 (сложить дополнение до 16, т.е. 1010).

 
 

Пример 1. Сложить А = и B = 5810.

Ответ: Сумма 9410

Сложение модулей десятичных чисел, имеющих разные знаки, производится по следующим правилам:

1. Модуль положительного числа представляется в прямом коде 8-4-2-1; модуль отрицательного числа – в дополнительном коде с избытком 6. Для получения дополнения отрицательного числа от модуля надо инвертировать значения разрядов всех его тетрад и к младшему разряду последней (младшей) тетрады прибавить единицу. Дополнительный код от модуля двоично-десятичного числа берется не десятичный, а двоичный, представляющий собой дополнительный код с избытком 6 (тетрады дополняются до 16, а не до 10).

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

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

4. Если при сложении тетрад (п. 2.) перенос из старшей тетрады отсутствует, то результату присваивается знак минус, т.е. результат получается в дополнительном избыточном коде. Для получения истинного результата необходимо инвертировать каждый разряд и к младшему разряду прибавить единицу. После чего провести коррекцию (прибавить дополнение 1010) полученного кода по всем тетрадам.

Пример 2. Даны два числа: А = 35710 и B = 19610. Запишем данные числа в прямом, обратном и дополнительном двоично-десятичном кодах:

А пр = 0011 0101 0111 Впр = 0001 1001 0110

Аобр= 1100 1010 1000 Вобр = 1110 0110 1001

Адоп= 1100 1010 1001 Вдоп = 1110 0110 1010

Пример 3. Вычтем из числа А = 35710 число B = 19610, для чего сложим Апр и Вдоп:

Апр = 0011 0101 0111

Вдоп = 1110 0110 1010

Апрдоп = *0001 1100 *0001(Отмеченные "*" тетрады имеют перенос)

1010 (проведем коррекцию результата)

А-В= 0001 0110 0001

А-В= + 110 610 110

  Операция суммирования Знак      
  Апр   0 0 1 1 0 1 0 1 0 1 1 1
  Вдоп   1 1 1 0 0 1 1 0 1 0 1 0
  S = Впр + Адоп   *0 0 0 1 1 1 0 0 *0 0 0 1
  Коррекция     0 1 1 0  
  S = Впр + Адоп с коррекцией   1 1 1 0 1 0 0 1 1 1 1 1
  Sпр   0 0 0 1 0 1 1 0 0000 +1
  Sпр     + 16110  

Пример 4. Вычтем из числа B = 19610 число А = 35710, для чего сложим Впр и Адоп: Впр = 0001 1001 0110; Адоп = 1100 1010 1001

  Операция суммирования Знак      
  Впр   0 0 0 1 1 0 0 1 0 1 1 0
  Адоп   1 1 0 0 1 0 1 0 1 0 0 1
  S = Впр + Адоп   1 1 1 0 *0 0 1 1 1 1 1 1
  Коррекция     0 1 1 0  
  S = Впр + Адоп с коррекцией   1 1 1 0 1 0 0 1 1 1 1 1
  Sпр инвертирование   0 0 0 1 0 1 1 0 0 0 0 0 + 1
  Sпр     –16110  

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: