3.2.4 Побитовые логические операции
3.2.4 Побитовые логические операции
Побитовые логические операции
amp; ! ^ ~ »» ««
применяются к целым, то есть к объектам типа char, short, int, long и их unsigned аналогам, результаты тоже цлые.
Одно из стандартных применений побитовых логических опраций – реализация маленького множества (вектор битов). В этом случае каждый бит беззнакового целого представляет один член множества, а число членов ограничено числом битов. Бнарная операция amp; интерпретируется как пересечение, ! как объединение, а ^ как разность. Для наименования членов такого множества можно использовать перечисление. Вот маленький прмер, заимствованный из реализации (не пользовательского итерфейса) «stream.h»:
enum state_value (* _good=0, _eof=1, _fail=2, _bad=4 *); // хорошо, конец файла, ошибка, плохо
Определение _good не является необходимым. Я просто хтел, чтобы состояние, когда все в порядке, имело подходящее имя. Состояние потока можно установить заново следующим обрзом:
cout.state = _good;
Например, так можно проверить, не был ли испорчен поток или допущена операционная ошибка:
if (cout.state amp;(_bad!_fail)) // не good
Еще одни скобки необходимы, поскольку amp; имеет более всокий приоритет, чем !.
Функция, достигающая конца ввода, может сообщать об этом так:
cin.state != _eof;
Операция != используется потому, что поток уже может быть испорчен (то есть, state==_bad), поэтому
cin.state = _eof;
очистило бы этот признак. Различие двух потоков можно находить так:
state_value diff = cin.state^cout.state;
В случае типа stream_state (состояние потока) такая раность не очень нужна, но для других похожих типов она оказвается самой полезной. Например, при сравнении вектора бит, представляющего множество прерываний, которые обрабатываются, с другим, представляющим прерывания, ждущие обработки.
Следует заметить, что использование полей (#2.5.1) в действительности является сокращенной записью сдвига и маскрования для извлечения полей бит из слова. Это, конечно, моно сделать и с помощью побитовых логических операций, Например, извлечь средние 16 бит из 32-битового int можно следующим образом:
unsigned short middle(int a) (* return (a»»8) amp;0xffff; *)
Не путайте побитовые логические операции с логическими операциями:
amp; amp; !! !
Последние возвращают 0 или 1, и они главным образом ипользуются для записи проверки в операторах if, while или for (#3.3.1). Например, !0 (не ноль) есть значение 1, тогда как ~ 0 (дополнение нуля) есть набор битов все-единицы, который обычно является значением -1.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Логические операции
Логические операции Логические операции позволяют комбинировать выражения, возвращающие логические величины. Язык JavaScript поддерживает три логические операции.Операция логического И (&&) возвращает true, если только оба операнда истинны. Например, (1<7)&&(3>2). При
Логические операции
Логические операции Для создания объектов более сложных, чем изначальные звезды, прямоугольники и эллипсы, мы можем использовать логические операции. Это гораздо проще, чем полноценная векторная графика, где мы будем создавать фигуры с нуля.Для выполнения логических
Глава 16 Логические операции
Глава 16 Логические операции • Понятие логических операций• Использование логических операцийРаботая с выделением, с которым мы познакомились в прошлой главе, можно использовать логические операции – это позволит в некоторых случаях упростить создание выделения или
Побитовые операторы
Побитовые операторы Побитовые операторы выполняют действия с операндами с учетом их двоичного представления:• not — побитовое отрицание (not 0 = 1; not 1 = 0);• and — побитовое умножение (0 and N = 0; 1 and 1 = 1);• or — побитовое сложение (1 or N = 1; 0 or 0 = 0);• xor — побитовое исключающее
Резюме: логические операции и выражения
Резюме: логические операции и выражения 1. ЛОГИЧЕСКИЕ ОПЕРАЦИИ Операндами логических операций обычно являются условные выражения. У операции != имеется только один операнд. Остальные имеют по два - один слева от знака и другой справа от него. && И|| ИЛИ! НЕII.
IV. Логические операции
IV. Логические операции Обычно логические операции "считают" условные выражения операндами. Операция ! имеет один операнд, расположенный справа. Остальные операции имеют два операнда: один слева и один справа. && Логическое И: результат операции имеет значение "истина",
Поразрядные логические операции
Поразрядные логические операции Четыре операции производят действия над данными, относящимися к классу целых, включая char. Они называются "поразрядными", потому что выполняются отдельно над каждым разрядом независимо от разряда, находящегося слепа или справа. ~ :
4. Null-значения и логические операции
4. Null-значения и логические операции Обычно в системах управления базами данных непосредственно поддерживаются только три логические операции: отрицание ¬, конъюнкция & и дизъюнкция ?. Операции следования ? и равносильности ? выражаются через них с помощью
Логические операции (Logical operations)
Логические операции (Logical operations) template ‹class T›struct logical_and: binary_function‹T, T, bool› { bool operator()(const T& x, const T& y) const {return x&& y;}};template ‹class T›struct logical_or: binary_function‹T, T, bool› { bool operator()(const T& x, const T& y) const {return x || y;}};template ‹class T›struct logical_not: unary_function‹T, bool› { bool operator()(const T& x) const
Логические операции
Логические операции Логические операции выполняют над своими операндами логические функции И (&&) и ИЛИ (||). Операнды логических операций могут иметь целый, плавающий тип, либо быть указателями. Типы первого и второго операндов могут различаться. Сначала всегда
4.3. Операции сравнения и логические операции
4.3. Операции сравнения и логические операции Символ операции Значение Использование ! Логическое НЕ !expr меньше exprexpr = Меньше либо равно expr=expr больше exprexpr = больше либо равно expr=expr == равно expr==expr != не равно expr!=expr логическое
4.11. Побитовые операторы
4.11. Побитовые операторы Таблица 4.3. Побитовые операторы Символ операции Значение Использование ~ Побитовое НЕ ~expr Сдвиг влево expr1expr2 Сдвиг вправо expr1expr2 Побитовое И expr1 expr2 ^ Побитовое Исключающее ИЛИ expr1 ^ expr2 | Побитовое ИЛИ expr1 |
Логические операции
Логические операции В XSLT имеются две логические операции — or и and. Эти операции бинарны, то есть каждая из них определена для двух операндов. Если операнды не являются булевыми значениями, они неявным образом приводятся к булевому типу.Семантика or и and очевидна — они
Логические операции
Логические операции К логическим относятся бинарные операции and, or и xor, а также унарная операция not, имеющие операнды типа boolean и возвращающие значение типа boolean. Эти операции подчиняются стандартным правилам логики: a and b истинно только тогда, когда истинны a и b, a or b истинно
Побитовые операции
Побитовые операции К побитовым относятся бинарные операции and, or, not, xor, shl, shr. Они производят побитовые манипуляции с операндами целого типа. Результирующий тип для and, or, xor будет наименьшим целым, включающим все возможные значения обоих типов операндов. Для shl, shr
4.1. Логические переменные и логические операции
4.1. Логические переменные и логические операции Информация (данные, машинные команды и т. д.) в компьютере представлена в двоичной системе счисления, в которой используется две цифры – 0 и 1. Электрический сигнал, проходящий по электронным схемам и соединительным