Логические выражения — это комбинации логических операторов и операндов, которые оцениваются как истинные или ложные. Логические выражения часто используются для создания условий в программах, таких как условные операторы (if, while).
В выражении A + B:
A
иB
— это операнды.+
или==
— это оператор, который выполняет операцию сложения.
При записи логических формул вместо слов “истина” и “ложь” обычно используют стандартные международные обозначения:
- вместо “истина” пишут: true, T, t, 1;
- вместо “ложь” пишут: false, F, f, 0;
В программировании обозначение логических операций зависит от синтаксиса конкретного языка программирования. Но в общем смысле операторы выглядят так:
Группа | Название (рус.) | Название (англ.) | Логическое название (рус.) | Операторы в коде | Математический символ | Ассоциативность |
---|---|---|---|---|---|---|
Унарные функции (с 1й переменной) | 1. Отрицание (инверсия) | Negation | НЕ (логическая инверсия) | NOT, ! | ¬a | Справа налево (правоассоциативный) |
2. Идентичность | Identity | Логическая тождественность | IS, === | a ≡ b | Слева направо (левоассоциативный) | |
Функции с 2мя переменными | 3. Эквиваленция | Equivalence | Равно (логическая равнозначность) | EQ, XNOR, =, == | a ⇔ b | Слева направо (левоассоциативный) |
4. Конъюнкция | Conjunction | И (логическое умножение) | AND, &, && | a ∧ b | Слева направо (левоассоциативный) | |
5. Дизъюнкция | Disjunction | ИЛИ (логическое сложение) | OR, |, || | a ∨ b | Слева направо (левоассоциативный) | |
6. Исключающее «или» | Exclusive OR | Исключающее ИЛИ (логическая неравнозначность) | XOR, ^, ~ | a ⊕ b | Слева направо (левоассоциативный) | |
7. Импликация | Implication | Следование (не более) | -> | a → b | Справа налево (правоассоциативный) | |
8. Обратная импликация | Reverse Implication | Следование (не менее) | <- | b ← a | Справа налево (правоассоциативный) |
Таблица истинности используется для описания всех возможных результатов применения логических операторов к их операндам.
Таблица истинности - это результат логических выражений
Обратите внимание на разницу между операциями “ИЛИ” и “XOR”. Она заключается только в последнем правиле:
- true ИЛИ true = true
- true XOR true = false
В русском языке обе операции изображаются одним и тем же союзом “или”. Это – пример неоднозначности естественного языка. Омонимы и многозначные слова могут иметь больше одного значения. Союз “или” именно такой: он имеет два возможных значения. Первое выражается логической операцией “ИЛИ”, второе – логической операцией “XOR”.
В английском языке существуют те же проблемы: союз “or” имеет те же два значения. А вот древним римлянам было проще, так как в латыни есть два разных слова: “vel” (операция “ИЛИ”) и “aut” (операция “XOR”).
Поскольку разница между операциями “ИЛИ” и “XOR” невелика (всего одно последнее правило), то иногда эта разница не имеет значения. Иногда о том, что имеется в виду, можно догадаться по интонации, или по контексту. Иногда определить точный смысл так и не удается.
Нагладные действия операции XOR: ( на языке Python):
x = 5
y = 7
x = x^y # x == 2
y = x^y # y == 5
x = x^y # x == 7
Шифрование XOR, которое используют (a XOR key) XOR key = a
. Часто юзают в CTF соревнованиях.
Шифр Вернама использует побитовую XOR(исключающее ИЛИ) версию шифра Виженера.
Приоритетность (precedence): какой оператор выполняется 1м среди разных операторов при отсутствии группирующих скобок. Н/р, 3 + 5 * 2
Ассоциативность: порядок выполнения операторов одного приоритета. Н/р, a ?? b ?? c ?? 10 - ?? выполняется справо налево
Как определяются порядок выполнения логических операций в выражениях (например, NOT имеет более высокий приоритет, чем AND, а AND — выше, чем OR).
2.1.3 Logical Expressions Theme Folder | Back To iOSWiki Contents | Unary Operators Theme