Skip to content

Latest commit

 

History

History
152 lines (129 loc) · 4.9 KB

Логические-операции.mediawiki

File metadata and controls

152 lines (129 loc) · 4.9 KB

Table of Contents

Логические значения

русское название английское название цифровое обозначение
ложь false 0
истина true 1

Основные логические операции

русское название английское название математическое обозначение знак операции в языке Си количество аргументов (арность) определение: результат операции
не, отрицание not ¬, ‾, - ! 1 (унарная) истина, когда аргумент — ложь; ложь, когда аргумент — истина
и, конъюнкция, логическое умножение and, conjunction ∧, ∙ && 2 (бинарная) истина тогда и только тогда, когда оба аргумента — истина
или (включающее или), дизъюнкция, логическое сложение or (inclusive or), disjunction ∨, + || 2 (бинарная) ложь тогда и только тогда, когда оба аргумента — ложь

Таблицы истинности

Поскольку логических значений — конечное число (а именно: 2), то их можно перебрать все явно.

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

Сочетания значений принято перебирать в порядке, соответствующем расположению в порядке возрастания двоичных чисел, составленных из цифровой записи значений операндов. Например, для 1-го значения: 0, 1; для 2-х значений: 00, 01, 10, 11, для 3-х значений: 000, 001, 010, 011, 100, 101, 110, 111; аналогично для большего количества значений.

"не"

x ¬x
0 1
1 0
"и"
x y x ∙ y
0 0 0
0 1 0
1 0 0
1 1 1
"или"
x y x ∨ y
0 0 0
0 1 1
1 0 1
1 1 1

Логические выражения в языке Си

Achtung!!!
Операция ^ в языке Си есть, но означает она вовсе не конъюнкцию (а побитовое исключающее "или").

В математической логике используются также другие операции, например "исключающее или" ("сложение по модулю 2"), но прямого аналога в языке Си для этой операции нет.

Логическому значению "ложь" ("false") в языке Си соответствует 0, значению "истина" ("true") 1. Результатом вычисления логических выражений и сравнений является значение 0 или 1 типа int.

В качестве аргументов логических выражений в языке Си могут использоваться любые выражения. Использование выражения в качестве аргумента логического выражения эквивалентно использованию результата сравнения этого выражения на неравенство с нулём.

Например:

  x && y

эквивалентно

  x != 0 && y != 0

Иначе говоря, при использовании в качестве операнда логической операции, любое ненулевое значение (в том числе, например, -1) трактуется как истина и только нулевое как ложь.

Приоритет операций:

  • Приоритет отрицания (как унарной операции) выше, чем других операций.
  • Приоритет логического "и" (как логического умножения) выше, чем приоритет логического "или" (как логического сложения).
  • Приоритет логических операций ниже, чем операций сравнения.
Пример:

выражение

  t && x > y + 1

эквивалентно

  t && (x > (y + 1))