ВУЗ:
Составители:
Рубрика:
35
var |= mask; // то же самое, что и var = var | mask;
Наконец, при операции исключающее ИЛИ результирующий бит
устанавливается равным 0, если оба бита соответствующих операндов равны 1,
и 1 в противном случае. Для выполнения данной операции в языке С++
используется символ ‘^’:
unsigned char var = 153; //двоичная запись 10011001
unsigned char mask = 0x11; // число 00010001
unsigned char res = var ^ mask; // результат 10001000
или
var ^= mask; // то же самое, что и var = var ^ mask;
Рассмотрим примеры использования логических операций, которые часто
применяются на практике. Самой распространенной по использованию
является операция логического И. Данная операция обычно используется
совместно с так называемыми масками. Под маской понимают битовый
шаблон, который служит для выделения тех или иных битов числа, к которому
она применяется. Например, если требуется определить, является
ли нулевой
бит числа установленным в 1 или нет, то для этого задается маска 00000001,
которая соответствует числу 1 и выполняется операция поразрядного И:
unsigned char flags = 3; // 00000011
unsigned char mask = 1; // 00000001
if((flag & mask) == 1) printf(“Нулевой бит включен”);
else printf(“Нулевой бит выключен”);
Здесь переменная flags, представленная одним байтом, содержит восемь
флаговых битов. Для того чтобы узнать установлен или нет нулевой флаговый
бит задается маска со значением 1 и выполняется операция логического И. В
результате все биты переменной flags будут равны нулю за исключением
нулевого, если он изначально имел значение 1. Таким образом, маска является
шаблоном, который
как бы накладывается на битовое представление числа, из
которого выделяются биты, соответствующие единичным значениям маски.
Рассмотренный пример показывает, как одна байтовая переменная flags может
содержать восемь флаговых значений и тем самым экономить память ЭВМ.
Следующим примером использования логических операция является
возможность включать нужные биты в переменной, оставляя другие без
изменений. Для этого
используется логическая операция ИЛИ. Допустим, в
переменной flags необходимо установить второй бит равным 1. Для этого
задается маска в виде переменной mask = 2 (00000010) и реализуется операция
логического ИЛИ:
Страницы
- « первая
- ‹ предыдущая
- …
- 33
- 34
- 35
- 36
- 37
- …
- следующая ›
- последняя »