Организация ЭВМ и систем. Однопроцессорные ЭВМ. Часть 1




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


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

Уже отмечалось, что каждая цифра десятичного числа может быть представлена кодом от 0000 до 1001, поэтому если при сложении разряда j двоично-десятичного числа результат меньше, либо равен 9, то коррекции не требуется, так как двоично-десятичный код результата полностью совпадает с его двоичным кодом.

Пример.

Zj=Xj+Yj

= 3(10)+5(10), где j – номер разряда десятичного числа

Если при сложении j-разрядов чисел результат Zj

будет больше или равен 10, то требуется коррекция результата. Рассмотрим, как машина может идентифицировать эту ситуацию. Существуют два варианта.

Вариант 1.                 Zj=10...15 = (1010...1111)

Здесь требуется коррекция, т.е. перенос 1 в старший (j+1) десятичный разряд. Необходимость коррекции в этом случае ЭВМ узнает по чисто формальным признакам:

Эту ситуацию можно описать логическим выражением:

Пример.

Zj=Xj+Yj

= 5(10)+7(10) , где j – номер разряда десятичного числа.

Перенос из разряда j означает в десятичной системе счисления, что

. В то же время в двоичной системе счисления перенос 1 из младшей тетрады в старшую означает, что
. Следовательно, при коррекции имеет место соотношение

Zjкор = Zj - 10(10) + 16(10) = Zj + 6(10).

Тогда в рассмотренном выше примере

Вариант 2.                 Zj=16,17,18 = (8+8, 8+9, 9+9)

В этом случае из младшей тетрады в старшую происходит перенос 1 или 16(10). Но в десятичной системе счисления переносится в старший разряд только 10. Следовательно, для компенсации в младший разряд следует прибавить 6.




Содержание  Назад  Вперед