Арифметические операции над двоично-десятичными кодами чисел
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

Существует несколько алгоритмов сложения двоично-десятичных кодов десятичных чисел. Приведем один из алгоритмов сложения, ко­торый получил довольно широкое распространение.

1. Сложение чисел начинается с младших цифр (тетрад) и произво­дится с учетом возникающих переносов из младших разрядов в старшие.

2. Знак суммы формируется специальной логической схемой по знаку большего слагаемого.

3. Для того чтобы при сложении двоично-десятичных цифр возни­кали переносы, аналогичные при сложении чисел в десятичном пред­ставлении, необходимо проводить так называемую десятичную кор­рекцию. Для этого к каждой тетраде первого числа прибавляется до­полнительно по цифре 610=01102, что позволяет исключить шесть не­используемых комбинаций (1010—1111)2, так как они кодируют шестнадцатеричные цифры АF (числа 10—1510).

4. После операции суммирования осуществляется корректировка суммы. Из тех тетрад суммы, из которых не было переносов, изыма­ются ранее внесенные избытки 610=01102. Для этого проводится вто­рая коррекция. Операция вычитания заменяется, как и обычно, опе­рацией сложения с числом -6, представленным дополнительным ко­дом 10102, но только в тех разрядах, в которых отсутствовали пере­носы. При этой второй коррекции переносы из тетрад блокируются.

5. Операция вычитания реализуется достаточно своеобразно. По общему правилу сложения (см. п. 1—4) к тетрадам числа с большим модулем прибавляются дополнительные коды тетрад другого числа. При этом первая коррекция не проводится, так как в дополнениях тет­рад она учитывается автоматически. Знак результата определяется по знаку числа с большим модулем.

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

Задание 1

Пример 1. Сложить числа А10 = -2 и В10 = -9 с одинаковыми знаками (без

переполнения).

А2= − 0010→ А2пк = 1 0010→ А2ок =1 1101→ А2дк= 1 1110

+ +

В2= −1001→ В2пк = 1 1001→ В2ок = 1 0110→ В2дк =1 0111

А2 дк2дк= С2дк = 11 0101→ С2пк =1 1011;

С2 = −1011, С10=−11.

При сложении чисел с одинаковыми знаками возможно по­лучение результата, значение которого больше величины 2n-1, где n — разрядность слагаемых. При этом результат не укладывается в отведенных для него разрядах, поэтому такая ситуация называет­ся переполнением разрядной сетки.

 

Пример 2. Сложить числа А10 = -13 и В10 = -6 с одинаковыми знака­ми (с переполнением).

А2 = −1101 → А2пк = 1 1101→ А2ок = 1 0010 → А2дк = 1 0011

+ +

В2 = -0110 → В2пк = 1 0110 → В2ок = 1 1001 → В2дк = 1 1010

А2 дк +В2дк= С2дк= 10 1101→С2пк =0 1101;

С2 = + 1101, С10=+13.

Одним из признаков переполнения является отличие знака суммы от знака слагаемых. Иногда при сложении используется модифицированный дополнительный код (МДК), в котором для знака числа отводится два разряда. В этом случае признаком пере­полнения являются различные значения знаковых разрядов сум­мы. Если переполнение не возникает, то значения знаковых раз­рядов совпадают. Рассмотрим примеры сложения чисел в МДК.

Пример 3. Сложить числа А10 = +11 и В10 = +8 (сумма больше 0).

А2= + 1011→ А2пк = 0 1011 → А2ок = 0 1011 → А2мдк = 00 1011

+ +

В2 =+ 1000 → В2пк = 0 1000 → В2ок = 0 1000 → В2мдк = 00 1000

 

А2 дк2дк = С2мдк = 01 0011

Переполнение! Различные значения знаковых разрядов суммы.

 

Так как при сложении в дополнительном коде учитываются знаки чисел, то вычитание чисел можно заменить сложением в соответствии с соотношением

А-В = А + (–В).

Таким образом, вычитание заменяется сложением уменьшае­мого с вычитаемым, взятым с обратным знаком.

 

Пример 4. Произвести вычитание чисел А10= −3 и B10 = +15 (с пере­полнением).

А2= − 0011→ А2пк= 1 0011 → А2ок=1 1100→ → → → → А2дк= 1 1101

+ +

В2=+1111 → В2пк= 0 1111→ (− В)2пк = 1 111→ (− В)2ок=1 0000 →

→ (− В)2дк =1 0001

______

А2 дк2дк= С2дк= 10 1110;

С2пк = 0 1101 С2=+1101? Переполнение!

Признаком переполнения в данном случае являются различные зна­чения знаковых разрядов разности.

 

Задание 2

Пример 5. Выполнить сложение чисел с ПТ в ДК, если А10 = −155/8;

А2 =−1111.101; АПТ = −0.1111101х10+100.

В10 = + 161/4; В2 = +10000.01; ВПТ =+0.1000001х10+101 .

А)пк= 1 1111101; (МА)дк = 1 0000011; (РА)пк=0 100; (РА)дк= 0 100; (МВ)пк =

0 1000001; (МВ)дк = 0 1000001;

В)ПК = 0 101; (РВ)дк = 0 101; (−РВ)дк=1 011.

Вычислим разность порядков:

А)ДК = 0 100

+

(−РВ )дк=1 011

______________

(ΔР)ДК = 1 111 →(ΔР)ПК =1 001→ (ΔР)2 =−001→(ΔР)10 =−1.

Разность порядков не равна нулю, выравнивание порядков необхо­димо. Разность порядков меньше нуля, число А имеет меньший порядок. Сдвигается мантисса числа А.

Мантисса числа А после сдвига: (МА)дк = 1 1000001 |1.

(В освобождающиеся разряды мантиссы заносится значение знаково­го разряда. Старший из выдвигаемых разрядов сохраняется в дополни­тельном разряде регистра суммы.)

Порядок суммы (РА+В)ДК = (РВ)ДК = 0 101.

Выполним сложение мантисс: (МА)дк = 1 1000001 |1

+

в)дк = 0 1000001 |0

___________

А)дк+ (МВ)дк= (МА + МВ)дк = 10 0000010 |1. Нормализация наруше­на справа.

Мантисса суммы сдвигается влево на пять разрядов.( не влево а вправо от сидящего)

 

Мантисса суммы после сдвига: (МА + МВ)дк = 0 1010000 |0

Округление. + |1

=___________

Мантисса суммы после округления: (МА + МВ)дк = 0 1010000.

Порядок суммы после нормализации: (РА+В)ДК = 0 101 + 1 011=0 000. Результат: (МА + МВ)пк = 0 1010000 → (МА + МВ)2 = + 0.1010000.

А+В)ДК = 0 000 → (РА+В)2 = + 000.

Сумма: (А + В)ПК = +0.1010000 х 10+000 →(А + В)2 = +0.101 →(А+В)10 =+5/8.

Точный результат: −155/8 + 161/4 = +5/8.

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

 

Пример 6. Определить разность чисел, представленных в форме с ПТ. Операцию выполнить с использованием МДК.

А10 = −53/4; А2 =−101.11; Апт = −0.10111х10+011.

В10 = + 35/8; В2 = +11.101; Впт =+0.11101х10+010 .

А)пк= 1 10111; (МА)мдк = 11 01001; (РА)пк=00 011; (РА)мдк= 00 011; (МВ)пк =

0 11101; (МВ)мдк =00 11101; (−МВ)мдк = 11 00011.

В)пк = 00 010; (РВ)мдк = 00 010; (−РВ)мдк=11 110.

Вычислим разность порядков:

А)мдк = 00 011

+

(−РВ )мдк=11 110

________

(ΔР)мдк = 00 001 →(ΔР)пк =00 001→ (ΔР)2 =+001→ΔР)10 =+1.

Разность порядков не равна нулю, выравнивание порядков необхо­димо. Разность порядков больше нуля, число В имеет меньший порядок. Сдвигается мантисса числа В.

Мантисса числа (−В) после сдвига: (−МВ)мдк =11 10001|‌1.

Порядок разности (РА-В)мдк = (РА)мдк = 00 011.

Выполним сложение мантисс: (МА)мдк =11 01001|0

+

(−МВ)мдк= 11 10001|1

___________________

А)мдк + (−МВ)мдк= (МА − МВ)мдк = 0 11010|1. Нормализация на­рушена слева.

Мантисса разности сдвигается вправо на один разряд.
Мантисса разности после сдвига: (МА − МВ)мдк = 11 01101|0
Округление. + |1

_______________________

Мантисса разности после округления: (МА − МВ)мдк =11 01101.

Порядок разности после нормализации: (РА-В)мдк = 00 011 + 00 001 =

= 00 100.

Результат: (МА – МВ)пк = 11 10011 → (МА − МВ)2 = −0.10011.

А-В)МДК = 0 100 → (РА-В)2 = +100.

(А − В)ПТ = −0.10011 х 10+100 → (А- В)2 = −1001.1 →(А− В)10 = −91/2.

Точный результат: −53/4 − 35/8 = −93/8.

Погрешность возникла при

сдвиге мантиссы числа В при выравнива­нии порядков.

Задание 3

Пример 7.Сложить два числа Аю= 177; В10=418.

 

 

Пример 8

Определить сумму чисел в двоично-десятичном коде, если

А10 = –183; B10 = 924.

A2–10 = – 0001 1000 0011; B2–10 = + 1001 0010 0100

(A2–10)ПК = 1 0001 1000 0011 (B2–10)пк = 0 1001 0010 0100

+ 0110 0110 0110 Прибавление кода 0110

(A2–10)ОК = 1 0111 1110 1001

1 1000 0001 0110 Инверсия

+ 0001 Прибавление единицы

(A2–10)ДК = 1 1000 0001 0111 (B2–10)ДК = 0 1001 0010 0100

(B 2–10)ДК = + 0 1001 0010 0100 Сложение

(A2–10 + B 2–10)ДК=10 0001 0011 1011 При суммировании возник

коррекция + 0110 0110 перенос из первой тетрады

(A2–10 + B 2–10)ДК= 0 0111 0100 0001 и образовалась запрещенная

(A +B) 2–10 = + 0111 0100 0001 комбинация последней тетраде

(A +B) 10 = + 741

 

Варианты индивидуальных заданий. Индивидуальное задание студенту определяется преподавателем. В индивидуальном задании требуется произвести операций над числами с ФТ, ПТ и Двоично-десятичном коде.

Вариант к заданию 1

 

А0 − 9 −2 −12 −11 −4
В0 −7 −9 −6 −3 −4

 

Вариант к заданию 2

А0 -145/8 125/8 1105/8 115/8 155/8 165/8 195/8 185/8 175/8
В 0 151/4 171/4 111/4 141/4 131/4 161/4 191/4 181/4 121/4

 

Вариант к заданию 3

 

А0 -214 -172 -174 -167 -174
В0 -171 -123 -387 -768

 

 

Контрольные вопросы

 

1. Какие элементы формата чисел с ПТ вы знаете?

2. Чем отличается нормализованное число с ПТ от

ненормализованного числа?

3. Для чего применяются двоично-десятичные коды?

4. Как зависит разрядность чисел от величины основания системы счисления?

5. Можно ли различить форматы целых и дробных чисел с ФТ?

6. Для чего используются машинные коды чисел?

7. Чем отличаются дополнительный и обратный коды отрицательных чисел?

8. Как из ДК отрицательного числа получить ПК числа?

 

 

Лабораторная работа 2



Дата: 2016-10-02, просмотров: 1324.