Несмотря на то, что выше уже шла речь об арифметических операциях сложения, вычитания, умножения и деления, все же необходимо сделать ряд замечаний. Как уже говорилось, все операции этой группы чаще всего могут быть реализованы с помощью единственной операции сложения и действия отрицания. Поэтому некоторые малогабаритные компьютеры содержат в своем наборе команд только операции сложения или сложения и вычитания.
Кроме того, следует напомнить, что существует множество различных вариантов любой арифметической операции. Речь об этом уже шла выше в связи с операциями сложения, которые включены в набор команд гипотетической машины. При операциях сложения операнды могут быть представлены в двоичном дополнительном коде, и тогда операция их сложения будет выполняться как обычное двоичное суммирование.
3 0011 -3 1101 7 0111
+2 +0010 +-2 +1110 +-5 +1011
5 0101 -5 1011 2 0010
Если же операнды будут представлены как числа в формате с плавающей точкой, то при суммировании потребуется выделить мантиссу каждого из чисел.
Рисунок 1 – Компоненты числа в двоичной нотации с плавающей точкой
После этого эти значения должны быть сдвинуты вправо или влево в зависимости от значения в поле порядка. Затем проверяются знаковые биты и выполняется операция сложения. Полученный результат вновь переводится в формат с плавающей точкой. Как видите, хотя обе описанные выше операции считаются операциями сложения, действия машины по их выполнению будут существенно отличаться. Более того, с точки зрения самой машины, между этими двумя операциями вообще нет никакой связи.
Контрольные вопросы
1. Как могут быть расширены логические операции?
2. Произведите логические операции AND (И), OR (ИЛИ) и XOR (исключающее ИЛИ) с двумя числовыми значениями 13 и 16.
3. На примере одного байта данных покажите назначение всех логических операций.
4. Какие виды сдвигов существуют и в каких целях они используются?
5. Каким образом можно реализовать арифметические операции?