Skip to content

Latest commit

 

History

History
150 lines (119 loc) · 8 KB

2.1.3.1 Logical Expressions.md

File metadata and controls

150 lines (119 loc) · 8 KB

Logical Expressions/Логические выражения

  1. Магия транзисторов: как мы научили компьютеры думать с помощью кусочков кремния?

Логические выражения — это комбинации логических операторов и операндов, которые оцениваются как истинные или ложные. Логические выражения часто используются для создания условий в программах, таких как условные операторы (if, while).

В выражении A + B:

  • A и B — это операнды.
  • + или == — это оператор, который выполняет операцию сложения.

При записи логических формул вместо слов “истина” и “ложь” обычно используют стандартные международные обозначения:

  • вместо “истина” пишут: true, T, t, 1;
  • вместо “ложь” пишут: false, F, f, 0;

Logical Operators (логические операторы)

В программировании обозначение логических операций зависит от синтаксиса конкретного языка программирования. Но в общем смысле операторы выглядят так:

Группа Название (рус.) Название (англ.) Логическое название (рус.) Операторы в коде Математический символ Ассоциативность
Унарные функции (с 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 Справа налево (правоассоциативный)

Truth Tables (таблицы истинности)

Таблица истинности используется для описания всех возможных результатов применения логических операторов к их операндам.

Таблица истинности - это результат логических выражений

OR/XOR

Обратите внимание на разницу между операциями “ИЛИ” и “XOR”. Она заключается только в последнем правиле:

  • true ИЛИ true = true
  • true XOR true = false

В русском языке обе операции изображаются одним и тем же союзом “или”. Это – пример неоднозначности естественного языка. Омонимы и многозначные слова могут иметь больше одного значения. Союз “или” именно такой: он имеет два возможных значения. Первое выражается логической операцией “ИЛИ”, второе – логической операцией “XOR”.

В английском языке существуют те же проблемы: союз “or” имеет те же два значения. А вот древним римлянам было проще, так как в латыни есть два разных слова: “vel” (операция “ИЛИ”) и “aut” (операция “XOR”).

Поскольку разница между операциями “ИЛИ” и “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(исключающее ИЛИ) версию шифра Виженера.

Operator Precedence (приоритет операторов)

Приоритетность (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