Выполнение операции вычитания.
Из математики известно, что операцию вычитания двух чисел можно заменить операцией сложения, если в качестве вычитаемого взять число, знак которого противоположен исходному. Применение такого подхода позволяет для выполнения операции вычитания использовать рассмотренные ранее схемы сумматоров. При этом важным становится вопрос представления двоичных кодов отрицательных чисел.
На практике, для представления знака числа используют старший разряд его кода. Обычно ноль в этом разряде означает, что число положительно, единица – что число отрицательно.
Однако присутствие знакового разряда непосредственно не позволяет использовать схемы сумматоров для выполнения операции вычитания чисел, представленных в прямом двоичном коде. Наиболее часто для записи отрицательного числа используется, так называемый, дополнительный код.
Алгоритм преобразования прямого кода в дополнительный и обратно сводится к следующему:
- записывают обратный код исходного числа, для чего все его разряды инвертируют (заменяют дополнениями);
- к полученному после инвертирования коду добавляют единицу.
При сложении прямого и дополнительного кодов чисел будет реализована операция вычитания. При этом знак результата определяется старшим разрядом полученного кода. Если он равен нулю, получено положительное число, представленное в прямом коде. Если старший разряд равен единице, получено отрицательное число, представленное в дополнительном коде.
Проиллюстрируем сказанное на примере.
Упражнение 8.1.Вычислить значение 12-31.
Решение
Предположим, что числа представлены 8 разрядными кодами:
, . Получим дополнительный код числа 31.
Обратный код числа 31 - .
Дополнительный код (число .
Поразрядно складываем два двоичных кода:
Старший разряд полученного кода равен «1», следовательно, получено отрицательное число в дополнительном коде. Применим к нему алгоритм преобразования дополнительного кода в прямой. |
Обратный код результата . Добавляем к нему единицу и получаем:
.
Упражнение 8.2.Вычислить значение 31-12.
Решение
Обратный код числа
Дополнительный код:
Поразрядно складываем два двоичных кода:
Код результата содержит 9 разрядов. Отбрасываем старший разряд и получаем код Результат положителен, так как старший из действующих разрядов равен «0». |
Дата добавления: 2016-03-10; просмотров: 992;