Логические операции
Логические операции предназначены для формирования признаков, используемых при управлении ходом выполнения программы. Эти опе- рации рассматривают операнд с точки зрения его соответствия одному из двух значений: “Истина” или ”Ложь”. Типовые логические операции:
НЕ, И, ИЛИ. Результат определяется таблицей истинности и представляет собой код, соответствующий “Истина” или ”Ложь”.
Особое место занимают битовые операции. Иногда их рассматри- вают как разновидность логических операций. В других случаях их вы- деляют в отдельную группу. С логическими операциями их сближает то, что битовые операции рассматривают данные как логические значения. Но, в отличие от логических операций, в качестве логического значения рассматривается каждый бит обрабатываемого кода.
Типовые битовые операции:
- инверсия битов (битовое НЕ),
- битовое умножение (битовое И),
- битовая неэквивалентность (битовое М2),
- битовое сложение (битовое ИЛИ).
Схемы
выполнения битовых операций
приведены на Рис.1.
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
Инверсия битов
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
Битовое сложение
А
`А
Рис. 1.
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
![]() |
![]() |
![]() |
|||||
![]() |
|||||||
0 |
0 |
1 |
0 |
Битовое умножение
![]() |
![]() |
![]() |
![]() |
Битовое сложение по модулю 2
А
В
А·В
Битовые операции использу- ются для обработки отдельных бит кода. Такая необходимость часто возникает из-за того, что поля битов в составе единого ко- да имеют разное смысловое зна- чение. Такой прием обычно ис- пользуется в кодах, описывающих состояние аппаратных средств ЭВМ. Например, байт атрибутов, который определяет режим ото- бражения символа на экране, имеет три разных по смыслу поля:
Биты с 0 по 3 – цвет символа Биты с 4 по 6 – цвет фона
Бит 7 – признак мерцания символа
Обработка бит сводится к че- тырем основным задачам:
1. Проверка состояния заданного бита
2. Установка заданных бит в ну-
левое состояние
3. Установка заданных бит в единичное состояние
4. Инверсия заданных бит
В основе решения лежит выполнение битовой операции над исход- ным кодом и специально подготовленным кодом, который называется маской. Решение задач будем рассматривать на примере исходного пя- тиразрядного кода, приведенного на рисунке.
4 3 2 1 0
Проверка состояния заданного бита. Маска должна содержать единицу в проверяемом бите. Остальные биты маски нули. Выполняется битовая операция И и
результат рассматривается как целое число. Если оно отлично от нуля, то бит находится в единичном состоянии, а если равно нулю – то в нуле- вом.
Пример. Проверить состояние бита с номером 1 и бита с номером 4.
1 0 1 0 1 (Исходный код) 1 0 1 0 1
· 0 0 0 1 0 (Маска) · 1 0 0 0 0
0 0 0 0 0 (Результат) 1 0 0 0 0
Вывод: бит с номером 1 находится в нулевом состоянии, а бит с номером 4 в единичном.
Установка заданных бит в нулевое состояние. Маска должна содер- жать нули в интересующих битах. Остальные биты маски единичные. Выполняется битовая операция И и ее результат записывается на место исходного кода. Единичные биты маски гарантируют сохранение состоя- ния всех бит, кроме интересующих бит.
Пример. Установить биты с номерами 1 и 2 в нулевое состояние.
1 0 1 0 1 (Исходный код)
· 1 1 0 0 1 (Маска)
1 0 0 0 1 (Результат)
Установка заданных бит в единичное состояние. Маска должна со- держать единицы в интересующих битах. Остальные биты маски нуле- вые. Выполняется битовая операция ИЛИ. Результат записывается на место исходного кода. Нулевые биты маски гарантируют сохранение со- стояния всех бит, кроме интересующих бит.
Пример. Установить биты с номерами 1 и 2 в единичное состояние.
1 0 1 0 1 (Исходный код)
Ú0 0 1 1 0 (Маска)
1 0 1 1 1 (Результат)
Инверсия заданных бит. Маска должна содержать единицы в интере- сующих битах. Остальные биты маски нулевые. Выполняется битовая операция М2. Результат записывается на место исходного кода. Нулевые биты маски гарантируют сохранение состояния всех бит, кроме интере- сующих бит.
Пример. Инвертировать биты с номерами 0,1 и 4.
1 0 1 0 1 (Исходный код)
Å 1 0 0 1 1 (Маска)
0 0 1 1 0 (Результат)
Достаточно часто возникает задача занесения в поле заданного кода. Решение этой задачи может потребовать установки битов в разное со- стояние. В качестве примера рассмотрим задачу занесения кода 001в биты с номерами 3,2,1.
В этом случае можно использовать один из следующих методов:
1. Последовательная установка бит сначала в одно состояние, а потом в другое.
1 0 1 0 1 (Исходный код)
Ú 0 0 0 1 0 (Маска для установки единицы)
1 0 1 1 1 (Единица занесена)
· 1 0 0 1 1 (Маска для установки нулей) 1 0 0 1 1 (Нули занесены)
2. Обнуление заданного поля и занесение в него кода через операцию битового ИЛИ.
Маска в этом случае должна содержать в интересующих битах заданный код. Остальные биты нулевые.
1 0 1 0 1 (Исходный код)
· 1 0 0 0 1 (Маска для обнуления) 1 0 0 0 1 (Нули занесены)
Ú 0 0 0 1 0 (Маска для занесения кода)
1 0 0 1 1 (Код занесен)
Предпочтительным является второй метод. Он обеспечивает решение задачи при заранее неизвестном по значению коде.
© ООО «Знанио»
С вами с 2009 года.