При обработке больших массивов экономической информации переводы чисел из десятичной системы в двоичную и обратно могут требовать значительного машинного времени. Некоторые образцы ЭВМ поэтому имеют или встроенные, или подключаемые блоки, которые обрабатывают десятичные целые числа в их двоично-десятичном представлении. Действия над ними также приводятся к операции алгебраического сложения отдельных цифр чисел, представленных дополнительными кодами в соответствии с табл. 2.3.
Существует несколько алгоритмов сложения двоично-десятичных кодов десятичных чисел. Приведем один из алгоритмов сложения, который получил довольно широкое распространение.
1. Сложение чисел начинается с младших цифр (тетрад) и производится с учетом возникающих переносов из младших разрядов в старшие.
2. Знак суммы формируется специальной логической схемой по знаку большего слагаемого.
3. Для того чтобы при сложении двоично-десятичных цифр возникали переносы, аналогичные при сложении чисел в десятичном представлении, необходимо проводить так называемую десятичную коррекцию. Для этого к каждой тетраде первого числа прибавляется дополнительно по цифре 610=01102, что позволяет исключить шесть неиспользуемых комбинаций (1010—1111)2, так как они кодируют шестнадцатеричные цифры А — F (числа 10—1510).
|
|
4. После операции суммирования осуществляется корректировка суммы. Из тех тетрад суммы, из которых не было переносов, изымаются ранее внесенные избытки 610=01102. Для этого проводится вторая коррекция. Операция вычитания заменяется, как и обычно, операцией сложения с числом -6, представленным дополнительным кодом 10102, но только в тех разрядах, в которых отсутствовали переносы. При этой второй коррекции переносы из тетрад блокируются.
5. Операция вычитания реализуется достаточно своеобразно. По общему правилу сложения (см. п. 1—4) к тетрадам числа с большим модулем прибавляются дополнительные коды тетрад другого числа. При этом первая коррекция не проводится, так как в дополнениях тетрад она учитывается автоматически. Знак результата определяется по знаку числа с большим модулем.
Пример 2.14. Сложить два числа Аю = 177; В10 =418.
Логические основы ЭВМ