что такое логический оператор
Что такое логический оператор
2) Логическое сложение или дизъюнкция:
Таблица истинности для дизъюнкции
A | B | F |
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
3) Логическое отрицание или инверсия:
Таблица истинности для инверсии
A | ¬ А |
1 | 0 |
0 | 1 |
4) Логическое следование или импликация:
«A → B» истинно, если из А может следовать B.
Обозначение: F = A → B.
Таблица истинности для импликации
A | B | F |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 1 |
0 | 0 | 1 |
5) Логическая равнозначность или эквивалентность:
Логические операторы (справочник по C#)
Следующие операторы выполняют логические операции с использованием логических операндов:
Оператор логического И &
В следующем примере правый операнд оператора & является вызовом метода, который выполняется независимо от значения левого операнда:
Для операндов целочисленных типов оператор & вычисляет побитовое логическое И своих операндов. Унарный оператор & является оператором AddressOf.
Оператор логического исключения ИЛИ ^
Для операндов целочисленных типов оператор ^ вычисляет побитовое исключающее ИЛИ своих операндов.
Оператор логического ИЛИ |
В следующем примере правый операнд оператора | является вызовом метода, который выполняется независимо от значения левого операнда:
Для операндов целочисленных типов оператор | вычисляет побитовое логическое ИЛИ своих операндов.
Условный оператор логического И &&
В следующем примере правый операнд оператора && является вызовом метода, который не выполняется, если левый операнд имеет значение false :
Оператор логического И & также вычисляет логическое И для своих операндов, но он всегда вычисляет оба операнда.
Условный оператор логического ИЛИ ||
В следующем примере правый операнд оператора || является вызовом метода, который не выполняется, если левый операнд имеет значение true :
Оператор логического ИЛИ | также вычисляет логическое ИЛИ для своих операндов, но всегда вычисляет оба операнда.
Операторы, допускающие логическое значение NULL
Для операндов bool? операторы & (логическое И) и | (логическое ИЛИ) поддерживают следующую логику с тремя значениями:
Эта семантика описывается в следующей таблице:
x | y | x&y | x|y |
---|---|---|---|
true | true | true | true |
true | false | false | true |
true | null | null | true |
false | true | false | true |
false | false | false | false |
false | null | false | null |
null | true | null | true |
null | false | false | null |
null | null | null | null |
Составное присваивание
Для бинарного оператора op выражение составного присваивания в форме
за исключением того, что x вычисляется только один раз.
Условные логические операторы && и || не поддерживают составное присваивание.
Приоритет операторов
В следующем списке перечислены логические операторы в порядке убывания приоритета:
Порядок вычисления, определяемый приоритетом операторов, можно изменить с помощью скобок ( () ).
Полный список операторов C#, упорядоченный по уровню приоритета, можно найти в разделе Приоритет операторов статьи Операторы C#.
Возможность перегрузки оператора
Спецификация языка C#
Дополнительные сведения см. в следующих разделах статьи Спецификация языка C#:
Логические операторы в Java
Знакомимся с каждым, узнаём про короткую и полную схемы вычислений. Проводим побитовые операции с целыми числами. Всё закрепляем на примерах.
Логические операции в Java возвращают значение типа boolean: true или false («правда» или «ложь»). Подробнее о булевом типе мы говорили здесь.
В языке Java есть шесть логических операторов. Первые четыре представлены в таблице ниже.
Логический оператор | Обозначение в Java | Выражение | Результат | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
«И» (AND): конъюнкция, логическое умножение | && | true && true false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Включающее «ИЛИ» (OR): дизъюнкция, логическое сложение | || | true || true true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Исключающее «ИЛИ» (XOR): строгая дизъюнкция, логическое вычитание | ^ | true ^ true true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
«НЕ» (NOT): инверсия, отрицание | ! | !true Java-разработчик, преподаёт в Skillbox, осваивает машинное обучение. Где нужны логические операторыУсловные выражения, в свою очередь, применяются в операторах ветвления ( if-else, switch, тернарном). Подробнее об этих операторах тут. Как применятьДопустим, мы хотим проверить, что значение переменной a больше значений в переменных b и c. То есть сравнить операнд a с двумя другими. Нам поможет логический оператор && (И). Логический оператор && (И) возвращает true, если слева и справа от него стоят значения true, а иначе — false. Иными словами, если оба логических высказывания истинны, то и операция && (И) возвращает истину. Как вычисляется значение выражения (a > b) && (a > c): Сначала проверяется условие ( a > b). Оно вернёт true, так как 6 больше 4. Далее проверяется условие ( a > c), которое также вернёт true, ведь 6 больше 3. Теперь у нас с двух сторон от логического оператора && стоят значения true. По определению выше или по таблице ещё выше, результат вычисления логического выражения ( true && true) равен true. Результат операции ( a > b) вернёт true, так как 6 больше 4, а операция ( a > c) уже вернёт false, так как 6 не больше 7. Значит, слева от логического оператора && стоит true, а справа — false. Следовательно, результат вычисления логического выражения (мы присвоили его булевой переменной d) будет false. Результат операции сравнения ( a > b) равен false, а что вернёт операция ( a > c), уже значения не имеет (смотрите определение выше) — результат вычисления логического выражения (мы присвоили его булевой переменной d) будет равен false. Рассмотрим примеры с другими операторами. Значение переменной d равно true. Теперь вычисляйте вы. Значение d равно false. О практическом применении XOR читайте здесь. Значение d стало true. Полные и сокращённые версии AND и OR&& и || называются сокращёнными логическими операторами AND и OR соответственно, или операторами короткой схемы вычислений. В спецификации Java их ещё зовут условными. Значения их операндов могут быть только булева типа. В отличие от двойных, одиночные & и | называются операторами полной схемы вычислений. Значения их операндов могут быть как только булевыми, так и только целочисленными (вместе с оператором ^ они используются в побитовых операциях). В чём разницаВ том, что для операторов & и | всегда вычисляются значения обоих операндов, а при работе операторов && и || второй операнд вычисляется только по необходимости. То есть иногда результат выражения однозначно определён уже по первому операнду: && и || используют как операторы булевой логики. Они оперируют значениями только булева типа и применяются только в логических выражениях. Как использовать&& и || позволяют экономить вычисления (применять короткую схему) и помогают избегать ошибок. Как это делается? Начнём с оператора &&. Приведём фрагмент из таблицы выше:
|