- •Выполнение работы
- •Для заданного шестнадцатеричного числа a выполнить следующую последовательность преобразований:
- •Представить десятичные числа
- •Выполнить, используя результаты работы по заданию 2, сложение чисел с фиксированной запятой:
- •Выполнить, используя результаты работы по заданию 2, вычитание чисел с фиксированной запятой:
- •Выполнить, используя результаты работы по заданию 2, перемножение чисел с произвольными знаками с фиксированной запятой:
- •Выполнить, используя результаты работы по заданию 3, арифметическую операцию сложения чисел
- •Выполнить, используя результаты работы по заданию 3, арифметическую операцию вычитания чисел:
- •Выполнить, используя результаты работы по заданию 3, арифметическую операцию умножения чисел:
Выполнить, используя результаты работы по заданию 3, арифметическую операцию сложения чисел
(C1) + (C2),
представленных с плавающей запятой в формате n = 5 со знаком, k = 4 со знаком.
Решение
С1 : m1пр = 11000, p1пр = 0011,
С2 : m2пр = 11111, p2пр = 0101.
Выравниваем порядки суммируемых чисел, для этого найдем разность порядков
р = р1 – р2 = р1 + (– р2)
(р1)пр = 0011;
(– р2)пр = 1101; (– р2)обр = 1010; (– р2)доп = 1011.
-
+
0
0
1
1
пр
1
0
1
1
доп
1
1
1
0
доп
р доп = 1110; р обр = 1101; р пр = 1010; р = – 2.
Поскольку р < 0, сдвигаем мантиссу числа С1 вправо на два разряда:
m’1пр = m1пр 2-2 = 10011.
Порядок обоих чисел принимаем равным р’1пр = р2пр = 0101.
Суммируем мантиссы чисел: m1 + m2.
Мантиссы обоих чисел отрицательны, поэтому представим их в дополнительном коде.
m’1доп = 11110, m2доп = 10001
+ |
1 |
1 |
1 |
0 |
1 |
доп |
1 |
0 |
0 |
1 |
0 |
доп |
|
1 |
0 |
1 |
1 |
1 |
1 |
доп |
Тогда mрез доп= 01111; ррез пр = р’1 = р2 = 0101.
Анализируем результат на нарушение нормализации. Имеет место нарушение нормализации влево, так как был выполнен только один перенос из знакового разряда.
Для нормализации результата сдвинем мантиссу на 1 разряд вправо и увеличим порядок на 1.
m’рез доп = 10111; m’рез пр = 11001; р’рез пр = ррез+1 = 0110.
Сумма чисел С1 и С2 с плавающей запятой в формате m = 5 со знаком, k = 4 со знаком равна: С1 + С2 = (– 0,1001 . 2110)2= (– 100100)2 = (–36)10.
Проверка: (–4,125)10 + (–30,25)10 = (–34,375)10.
Небольшая разница в результатах объясняется ограниченностью разрядной сетки.
Выполнить, используя результаты работы по заданию 3, арифметическую операцию вычитания чисел:
(C1) - (C2),
представленных с плавающей запятой в формате n = 5 со знаком, k = 4 со знаком.
Решение
С1 : m1пр = 11000, p1пр = 0011,
С2 : m2пр = 11111, p2пр = 0101.
Операция вычитания отличается от сложения искусственным изменением знака вычитаемого на обратный:
С1 – С2 = С1 + (– С2).
Выравниваем порядки суммируемых чисел, для этого найдем разность порядков
р = р1 – р2 = р1 + (– р2)
(р1)пр = 0011;
(– р2)пр = 1101; (– р2)обр = 1010; (– р2)доп = 1011.
-
+
0
0
1
1
пр
1
0
1
1
доп
1
1
1
0
доп
р доп = 1110; р обр = 1101; р пр = 1010; р = – 2.
Поскольку р < 0, сдвигаем мантиссу числа С1 вправо на два разряда:
m’1пр = m1пр 2-2 = 10010.
Порядок обоих чисел принимаем равным р’1пр = р2пр = 0101.
Находим разность мантисс чисел: m’1 – m2 = m’1 +(– m2).
Мантисса m’1 отрицательна, поэтому представим ее в дополнительном коде:
m’1доп = 11110.
Мантисса m2 также отрицательна, следовательно, величина (– m2) положительна, для ее представления будем использовать прямой код:
(– m2)пр = 01111.
Выполним сложение кодов
+ |
1 |
1 |
1 |
1 |
0 |
доп |
0 |
1 |
1 |
1 |
1 |
пр |
|
1 |
0 |
1 |
1 |
0 |
1 |
пр |
Тогда mрез пр = 01101; ррез пр = р’1 = р2 = 0101.
Анализируем результат на нарушение нормализации. Нарушения нормализации влево нет, так как при выполнении сложения были выполнены оба переноса: и в знаковый разряд, и из знакового разряда. Нарушения нормализации вправо также нет, о чем свидетельствует старший значащий разряд результата, равный единице.
Мы получили нормализованный результат.
mрез пр = 01101; ррез пр = 0101.
С1 – С2 = (+0,1101 * 2101 )2 = (11010)2=(26)10.
Проверка: (-4,125)10 – (–30,25)10 = (26,125)10.
Погрешность объясняется ограниченностью разрядной сетки.
