Здавалка
Главная | Обратная связь

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

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

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

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

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

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

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

 

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

Представим модули чисел А в прямом коде, B – в коде с избытком 6.

А = 0011 *0110 Отмеченные "*" тетрады имеют перенос

Bизб = +1011 1110 Код с избытком 6

1111 0100

1010 Коррекция результата по тетрадам

Перенос теряется 1 1001 0100 Сумма 9410

 

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

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

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

3.Если при сложении тетрад получается результат больше 10, то автоматически вырабатывается перенос в следующую тетраду. Если возникает перенос из старшей тетрады, то он теряется, а результату присваивается знак плюс, т.е. результат получается в прямом избыточном коде Для получения истинного результата необходимо вычесть избытки 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

 

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

Впр = 0001 1001 0110

Адоп = 1100 1010 1001

Впрдоп = 1110 *0011 1111 (Отмеченные "*" тетрады имеют перенос)

(А+В) обр = 0001 1100 0000 (инвертируем каждый разряд)

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

В-А= 0001 0110 0001 и добавим в младший разряд 1)

В-А= - 110 610 110

 

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

 





©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.