- •Выполнение работы
- •Для заданного шестнадцатеричного числа a выполнить следующую последовательность преобразований:
- •Представить десятичные числа
- •Выполнить, используя результаты работы по заданию 2, сложение чисел с фиксированной запятой:
- •Выполнить, используя результаты работы по заданию 2, вычитание чисел с фиксированной запятой:
- •Выполнить, используя результаты работы по заданию 2, перемножение чисел с произвольными знаками с фиксированной запятой:
- •Выполнить, используя результаты работы по заданию 3, арифметическую операцию сложения чисел
- •Выполнить, используя результаты работы по заданию 3, арифметическую операцию вычитания чисел:
- •Выполнить, используя результаты работы по заданию 3, арифметическую операцию умножения чисел:
Выполнить, используя результаты работы по заданию 2, сложение чисел с фиксированной запятой:
(B1) + (B3),
представленных в машинном коде со знаком.
Решение.
B1пр = 001000;
B3пр = 110101.
Выполняем алгоритм сложения:
Для выполнения сложения положительное число B1 представляем прямым кодом, для отрицательного числа B3 используем дополнительный код:
B1пр = 001000; B3доп = 101011.
Суммируем полученные коды:
+
0
0
1
0
0
0
1
0
1
0
1
1
1
1
0
0
1
1
Анализируем полученный результат на переполнение (анализируем переносы из старшего значащего разряда и из знакового). Оба анализируемых переноса отсутствуют, следовательно, переполнения нет, результат верный.
Так как в знаковом разряде находится единица, делаем вывод, что результат отрицательный. Следовательно, он представлен в дополнительном коде. Переводим результат суммирования в обратный код (вычитанием единицы из младшего разряда), затем в прямой код (инвертируя все разряды кода, кроме старшего – знакового), по которому получаем двоичное число со знаком:
B1 + B3 = (110011)2доп = (110010) 2обр = (101101) 2пр = (–1101)2 = (–13)10.
Проверка: (+8)10 + (–21)10 = (–13)10.
Выполнить, используя результаты работы по заданию 2, вычитание чисел с фиксированной запятой:
(B3) – (B2),
представленных в машинном коде со знаком.
Решение
B2пр = 111011;
B3пр = 110101.
В ЭВМ операция вычитания чисел с произвольными знаками заменяется операцией алгебраического сложения по формуле
B3 – B2 = B3 + (–B2).
Воспользуемся алгоритмом вычитания:
Знак вычитаемого в прямом коде заменяем на противоположный. Так как число B2 отрицательное, то (–B2) станет положительным.
Положительное число (–B2) представляем прямым кодом, отрицательное B3 – дополнительным:
B3доп = 101011, (–B2)2пр = 011011.
Суммируем полученные коды:
+ |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
|
1 |
0 |
0 |
0 |
1 |
1 |
0 |
Единицу переноса из знакового разряда по правилам выполнения операции сложения в дополнительном коде отбрасываем.
Анализируем полученный результат на переполнение (анализируем переносы из старшего значащего разряда и из знакового). Оба анализируемых переноса присутствуют, следовательно, переполнения нет, результат верный.
В знаковом разряде результата – единица, следовательно, результат суммирования положительный и представлении в прямом коде. Переводим его двоичное, а затем в десятичное число со знаком:
B3 – B2 = (000110)2пр = (+110)2 = (+6)10 .
Проверка: (–21)10 – (–27) = (+6)10.
