порозрядного додавання чисел, представлених в Д-коді, розглянемо ті особливості, які притаманні цим кодам.
1. Наявність заборонених комбінацій.
Її поява свідчить про помилку або ж про необхідність корекції результату.
2. При додаванні тетрад виникає потетрадного перенос. Це також призводить до необхідності корекції результату.
Справді, якщо складати і,
то сума дорівнює
,
Де - I - ий розряд суми; Пi-1 - перенесення з молодшої тетради; Пi - перенесення в старшу тетраду.
Якщо при додаванні в даному розряді числа утворюється сума менше 10, то правильний результат отримують без корекції.
У разі якщо сума більше або дорівнює 10, то потрібна корекція результату в даній тетраді введенням поправки, рівної +0110.
) Приклад складання цілих чисел у форматі упаковане десяткове
Алгоритм операції додавання
Спочатку перевіряють числа на знаки. Якщо вони обоє позитивні або негативні, то числа підсумовуються без яких або змін. p> Якщо ж вони мають різні знаки, то число зі знаком - переводитися в додатковий код, після чого їх складають.
Якщо результат має негативний, то число переводять у прямий код, якщо ні, то результат не міняють. p> При підсумовуванні двох чисел береться по одній цифрі (тетраде) з кожного числа, складаються і перевіряють, вони більше 9 чи ні. Якщо більше, то від результату складання віднімається 10-ка та переносу присвоюють значення рівне одиниці. В іншому випадку з результат не міняють. p> Все повторюється стільки разів, яка максимальна довжина вхідного рядка.
Переклад в додатковий код проводитися наступним чином: спочатку до кожної цифри додається 6-ка, далі всі число інвертується і до нього додається еденица
Зворотній переклад (з додаткового в прямій) інвертується число і з кожного віднімається 6-ка, потім додається еденица
програма код чило суматор суперЕОМ
В
Рис. 3 ДСА арифметичної операції Рис. 4 ДСА п п суми чисел
В
В
Рис. 7 ДСА Висновку двоїни Рис. 8 ДСА п п перекладу в
подання числа додатковий код
Результат роботи алгоритму
В
Рис. 11 Додавання. br/>В
Рис.12 Висновок допомоги.
Додаток:
unit Adding;
interface
cod: array [1 .. 11] of string = ('0000 ', '0001', '0010 ', '0011', '0100 ', '0101', '0110 ',...