Пример 39. Найти сумму чисел A=0,1000∙2-3 и B=-0,1011∙2-3, если мантисса и порядок обрабатываются на сумматорах дополнительного кода (пять разрядов для мантиссы и четыре разряда для порядка).
Сначала записываются машинные значения операндов:
[mA]с=0,1000, [pA]с=1 101,
[mB]с=1,0101, [pB]с=1 101.
А затем мантиссы складываются:
+0,1000
1,0101
[mC]с =1,1101,
Т.е. mC=-0,0011, т.е. мантиссу нужно сдвинуть на 2 разряда влево, при этом порядок уменьшив на 2, что равносильно сложению порядка с -10 (в дополнительном коде 1 110).
Т.е. mC=-0,1100, [pС]с=+1 101
1 110
[pC]с =11 011,
Теперь мантисса удовлетворяет условию нормализации и результат равен
mC=-0,1100, pC=-101.
Т.е. С=-0,1100∙2-5.
Пример 40. Найти сумму чисел A=-0,1100∙24 и B=-0,1000∙24, если числа складываются на сумматоре обратного кода (пять разрядов для мантиссы и четыре разряда для порядка).
Сначала записываются машинные значения операндов:
[mA]i=1,0011, [pA]i=0 100,
[mB]i=1,0111, [pB]i=0 100.
Затем мантиссы складываются: +1,0011
1,0111
+ 10,1010
_____1,
[mC]i= 0,1011
Здесь произошло переполнение (знак суммы не совпадает со знаком двух операндов), и, следовательно, нарушение нормализации справа. Значит, требуется сдвиг мантиссы результата вправо (сдвигаем первоначальный результат 10,1010). Т.е. mC=-0,1010. При этом порядок увеличивется на 1.
Т.е. mC=-0,1010, [pС]i=+0 100
1
[pC]i =0 101,
Теперь мантисса удовлетворяет условию нормализации и результат равен
mC=-0,1010, pC= 101.
Т.е. С=-0,1010∙25.
Пример 41. Сложить числа A=0,1011∙2-2 и B=-0,1001∙2-3 на сумматоре обратного кода (пять разрядов для мантиссы и четыре разряда для порядка).
Сначала записываются машинные значения операндов и определим, какой из порядков больше:
[mA]i=0,1011, [pA]i=1 101,
[mB]i=1,0110, [pB]i=1 100.
[Δp]i=[pA]i-[pB]i=[pA]i+[-pB]i.
-pB=3, [-pB]i=0 011.
Следовательно, [Δp]i =[pA]i+[-pB]i=1 101 + 0 011 = 0 001. Так как величина Δp положительна, то pA> pB. Следовательно, надо сдвинуть мантиссу числа B вправо на количество разрядов, равное Δp, т.е. на один разряд [mB]i=1,1011 (знак числа сохраняется). Теперь порядки операндов равны.
Затем мантиссы складываются: +0,1011
1,1011
+ 10,0110
_____1,
[mC]i= 0,0111
Осуществим нормализацию мантиссы и сдвиг порядка.
Т.е. [mC]i= 0,1110, +1 101
1 110
11 011,
____1
[pC]i =1 100
Так как нарушений нормализации нет, то получен окончательный результат С=0,1110∙2-3.
Пример 42. Сложить числа A и B, заданные в форме с фиксированной запятой:
mA=100110; pA=101; mB=-111001; pB=011.
Для выполнения операции сложения использовать сумматор дополнительного кода, имеющий семь битов для мантиссы со знаком и 4 бита для порядка со знаком.
Запишем машинные значения операндов и определим, какой из порядков больше:
[mA]с=0 100110, [pA]с=0 101,
[mB]с=1 000111, [pB]с=0 011.
Сравним порядки:
[Δp]с=[pA]с-[pB]с=[pA]с+[-pB]с.
-pB=-3, [-pB]с=1 101.
Следовательно, [Δp]с =[pA]с+[-pB]с=0 101 + 1 101 = 0 010. Разность порядков положительна: второй порядок меньше первого на 2. Следовательно, мантисса второго числа сдвигается на два разряда вправо и после этого мантиссы складываются. [mB]с=1 110001 (знак числа сохраняется).
+0 100110
1 110001
[mC]с=10 010111
Осуществим нормализацию мантиссы и сдвиг порядка.
Т.е. [mC]с= 0 101110,
+0 101
1 111
[pC]с =10 100,
Так как нарушений нормализации нет, то получен окончательный результат С=+101110, pC=100.
Задания.
Сложить числа с плавающей запятой на сумматоре обратного кода (пять разрядов для мантиссы и четыре разряда для порядка).