Открыть сервис

Булевы операторы

Булевы операторы (также логические операторы, булевы связки) — это математические символы или слова, используемые в алгебре логики (булевой алгебре) для построения сложных логических выражений из простых высказываний. Они оперируют значениями истинности (истина или ложь, 1 или 0) и возвращают результат в виде одного из этих двух значений. Булевы операторы являются фундаментом цифровой электроники, программирования, теории множеств и формальной логики.

История

Основы алгебры логики были заложены в середине XIX века английским математиком Джорджем Булем (1815–1864). В своей работе «Исследование законов мышления» (1854) он предложил систему символов и правил для представления логических операций, аналогичную алгебраической. Первоначально идеи Буля не нашли широкого практического применения.

Развитие алгебры логики продолжили другие математики и логики:

Основные булевы операторы

В классической двузначной логике выделяют три фундаментальных оператора: отрицание (NOT), конъюнкцию (AND) и дизъюнкцию (OR). На их основе строятся все остальные.

Отрицание (NOT, ¬, !, ~)

Унарный оператор (применяется к одному операнду). Возвращает истину, если операнд ложен, и ложь, если операнд истинен. В русскоязычной литературе часто обозначается чертой над переменной (Ā).

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

A¬A
01
10

Пример в программировании (Python): if not is_ready: — выполняется, если переменная is_ready равна False.

Конъюнкция (AND, ∧, &, &&)

Бинарный оператор (применяется к двум операндам). Возвращает истину только тогда, когда оба операнда истинны. В логике соответствует союзу «и».

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

ABA ∧ B
000
010
100
111

Пример в программировании (C++): if (x > 0 && x < 10) — условие истинно, только если x одновременно больше 0 и меньше 10.

Дизъюнкция (OR, ∨, |, ||)

Бинарный оператор. Возвращает истину, если хотя бы один из операндов истинен. В логике соответствует союзу «или» (в неисключающем смысле).

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

ABA ∨ B
000
011
101
111

Пример в программировании (Java): if (user.isAdmin() || user.isModerator()) — условие истинно, если пользователь является администратором или модератором.

Производные операторы

На основе трёх базовых операторов строятся дополнительные логические связки.

Исключающее ИЛИ (XOR, ⊕, ^)

Возвращает истину, если операнды различны (один истинен, другой ложен). В русском языке иногда называют «строгая дизъюнкция» или «разделительное ИЛИ».

ABA ⊕ B
000
011
101
110

Применение: широко используется в криптографии (шифрование XOR) и для проверки чётности (контрольные суммы).

Импликация (→, ⇒)

Логическая связка, соответствующая конструкции «если… то…». Возвращает ложь только в одном случае: когда посылка (A) истинна, а следствие (B) ложно.

ABA → B
001
011
100
111

Эквиваленция (↔, ≡)

Возвращает истину, когда оба операнда имеют одинаковое значение истинности. Соответствует конструкции «тогда и только тогда, когда».

ABA ↔ B
001
010
100
111

Штрих Шеффера (NAND, ↑)

Оператор, эквивалентный отрицанию конъюнкции. Возвращает ложь только когда оба операнда истинны. Примечателен тем, что является функционально полным: с помощью только NAND можно выразить любую другую логическую операцию.

ABA ↑ B
001
011
101
110

Стрелка Пирса (NOR, ↓)

Оператор, эквивалентный отрицанию дизъюнкции. Возвращает истину только когда оба операнда ложны. Также является функционально полным.

ABA ↓ B
001
010
100
110

Приоритет операторов

В сложных логических выражениях, как и в арифметике, существует порядок выполнения операций. Стандартный приоритет (от высшего к низшему):

  1. Скобки ()
  2. Отрицание (NOT, ¬)
  3. Конъюнкция (AND, ∧)
  4. Дизъюнкция (OR, ∨)
  5. Импликация (→)
  6. Эквиваленция (↔)

В программировании приоритеты могут различаться в зависимости от языка. Например, в C-подобных языках ! (NOT) имеет высший приоритет, затем && (AND), затем || (OR). Рекомендуется использовать скобки для явного задания порядка.

Законы булевой алгебры

Булевы операторы подчиняются ряду законов, которые используются для упрощения логических выражений:

Применение

Цифровая электроника

Булевы операторы реализуются в виде логических вентилей — элементарных электронных схем. Микросхемы, содержащие тысячи и миллионы вентилей (AND, OR, NOT, NAND, NOR, XOR), составляют основу процессоров, контроллеров и других цифровых устройств. Комбинация вентилей позволяет выполнять арифметические операции, сравнение данных, управление памятью.

Программирование

Булевы операторы используются в:

Теория множеств

Операции над множествами (пересечение, объединение, дополнение) являются прямым аналогом булевых операторов:

Базы данных

В языке SQL булевы операторы (AND, OR, NOT) используются в конструкции WHERE для фильтрации записей по нескольким условиям.

Интересные факты

Источники

  1. Джордж Буль. «Исследование законов мышления» (1854).
  2. Клод Шеннон. «Символический анализ релейных и переключательных схем» (1937).
  3. Эмиль Пост. «Введение в общую теорию элементарных предложений» (1921).
  4. Учебник «Дискретная математика» под редакцией В. А. Горбатова.
  5. Документация по языкам программирования C, C++, Java, Python (разделы «Операторы»).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →