Реклама:

Бинарные операции - это такие операции, которые получают результат на основе значений двух операндов. Все архитектуры команд содержат команды для сложения и вычитания целых чисел. Кроме того, практически во всех архитектурах имеются команды умножения и деления целых чисел. Вероятно, нет необходимости объяснять, почему компьютеры оснащены арифметическими командами.

В следующую группу бинарных операций входят булевы команды. Хотя существует 16 булевых функций от двух переменных, команды для всех 16 поддерживаются в очень немногих машинах. Обычно поддерживаются только операции И, ИЛИ и НЕ; иногда кроме них еще ИСКЛЮЧАЮЩЕЕ ИЛИ, НЕ-ИЛИ и НЕ-И.

Важным применением операции И является выделение битов из слов. Рассмотрим машину со словами длиной в 32 бита, в которой на одно слово приходится четыре 8-разрядных символа. Предположим, что нужно отделить второй символ от остальных трех, чтобы его напечатать. Это значит, что нужно создать слово, в котором этот символ займет правые 8 бит, а левые 24 бит должны стать нулевыми (так называемое выравнивание вправо).

Чтобы извлечь нужный нам символ, слово, содержащее этот символ, соединяется операцией И с константой, которая называется маской. В результате этой операции все ненужные биты меняются на нули:

А:

10110111 10111100 ПОПОИ 10001011 В (маска):

00000000 11111111 00000000 00000000 А И В:

00000000 10111100 00000000 00000000

Затем результат сдвигается на 16 бит вправо, чтобы нужный символ оказался в правой части слова.

Важным применением команды ИЛИ является помещение битов в слово. Эта операция обратна операции извлечения. Чтобы изменить правые 8 бит 32-разрядного слова, не повредив при этом остальные 24 бита, сначала нежелательные 8 бит надо заменить нулями, а затем новый символ соединить операцией ИЛИ с полученным результатом:

А:

10110111 10111100 11011011 10001011 В (маска):

11111111 11111111 11111111 00000000 А И В:

10110111 10111100 11011011 00000000

С:

00000000 00000000 00000000 01010111 (А И В) ИЛИ С:

10110111 10111100 11011011 01010111

Операция И удаляет единицы, поэтому в полученном результате никогда не бывает больше единиц, чем в любом из двух операндов. Операция ИЛИ вставляет единицы, поэтому в полученном результате всегда по крайней мере столько же единиц, сколько в операнде с большим количеством единиц. Операция ИСКЛЮЧАЮЩЕЕ ИЛИ, в отличие от них, симметрична в отношении единиц и нулей. Такая симметрия иногда может быть полезной, например при порождении случайных чисел.

Большинство компьютеров сегодня поддерживают команды с плавающей точкой, которые в основном соответствуют арифметическим операциям с целыми числами. Большая часть машин поддерживает по крайней мере 2 варианта таких чисел: более короткие для скорости и более длинные на тот случай, если требуется высокая точность вычислений. Существует множество возможных форматов для чисел с плавающей точкой, но сейчас практически везде применяется единый стандарт IEEE 754. Числа с плавающей точкой и этот стандарт обсуждаются в приложении Б.

Команды перемещения данных || Оглавление || Унарные операции