Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ТЕОРИИ ЦИФРОВЫХ УСТРОЙСТВ И....doc
Скачиваний:
6
Добавлен:
01.05.2025
Размер:
5.42 Mб
Скачать

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

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

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

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

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

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

Пример 2.4.3

Сложить А = 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, т.е. 10102) в тех тетрадах, где перенос отсутствовал.

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

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

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

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

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

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

Апр = 0011 0101 0111

Вдоп = 1110 0110 1010

(А+В)доп = *0001 1100 *0001( «*» имеют перенос)

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

(А + В)пр = 0001 0110 0001

(А – В) = + 110 610 110

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

Вдоп = 0001 1001 0110

Адоп = 1100 1010 1001

(В + А)доп = 1110 *0011 1111( « * » тетрады имеют перенос)

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

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

(В – А) = 0001 0110 0001

(В – А) = – 110 610 110

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