Skip to main content

Булева алгебра

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

В робототехнике она нужна, чтобы понятно формулировать условия:

  • в коде (if),
  • в схемах (логические микросхемы),
  • в правилах безопасности (“если авария — выключить”).
🎓 В курсе nand2cpu
Подробно с практикой: Урок 3: Логические операции

Базовые операции

ОперацияСимволКодСмысл
NOT (НЕ)\(\lnot A\), \(\overline{A}\)!AИнверсия
AND (И)\(A \land B\)A && BИстина, если все истинны
OR (ИЛИ)\(A \lor B\)A || BИстина, если хотя бы один
XOR (искл. ИЛИ)\(A \oplus B\)A ^ BИстина, если ровно один

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

NOT (инверсия)

ANOT A
01
10

AND, OR, XOR

ABA AND BA OR BA XOR B
00000
01011
10011
11110

Мнемоника:

  • AND — «умножение»: \(1 \land 1 = 1\), иначе 0
  • OR — «максимум»: \(0 \lor 0 = 0\), иначе 1
  • XOR — «разные?»: разные входы → 1

NAND и NOR — универсальные вентили

ABA NAND BA NOR B
0011
0110
1010
1100

NAND = NOT(AND), NOR = NOT(OR)

💡 Почему NAND особенный?
Из NAND можно построить любую логическую функцию! Это основа курса «От NAND до CPU».

Ключевые законы (шпаргалка)

ЗаконФормулаПример
Тождество\(A \land 1 = A\)Вход без изменений
Нуль\(A \land 0 = 0\)«Выключатель»
Единица\(A \lor 1 = 1\)Всегда включено
Идемпотентность\(A \land A = A\)Дублирование не меняет
Инверсия\(\lnot(\lnot A) = A\)Двойное отрицание
Де Морган\(\lnot(A \land B) = \lnot A \lor \lnot B\)«Переворот» условия

Де Морган на практике

Когда вы «переворачиваете» условие:

НЕ (A И B) = (НЕ A) ИЛИ (НЕ B)
НЕ (A ИЛИ B) = (НЕ A) И (НЕ B)

Пример в коде:

// Эти условия эквивалентны:
if (!(a && b)) { ... }
if (apt list --installed | grep -E "gz-|ignition" || !b) { ... }

Практические примеры

Пример 1: Разрешение мотора

A = концевик нажат
B = старт разрешён
E = авария

Мотор включить: Y = B AND (NOT A) AND (NOT E)

Читается: старт разрешён И концевик НЕ нажат И аварии НЕТ.

Пример 2: Сигнализация

D = дверь открыта
W = окно открыто
M = движение

Тревога: Y = D OR W OR M

Любое из условий → тревога.

Пример 3: XOR для сравнения

A XOR B = 0  →  A и B одинаковы
A XOR B = 1  →  A и B разные

Используется в компараторе.

Связь с другими темами

  • Двоичные числа — биты, с которыми работают операции: binary_numbers
  • Логические элементы — как реализовать в схемах: logic_gates
  • NAND как универсальный вентиль — весь курс: nand2cpu
  • Битовые операции в коде — маски, флаги, регистры

Мини‑задания

  1. Чему равно \(\lnot A\) для A=0 и для A=1?

  2. Для A=1, B=0 посчитайте: \(A \land B\), \(A \lor B\), \(A \oplus B\).

  3. Упростите: \(\lnot(\lnot A)\).

  4. Примените де Морган: \(\lnot(A \lor B) = ?\)

  5. Составьте выражение: «LED горит, если кнопка1 ИЛИ кнопка2 нажата, НО НЕ обе сразу».

Details
  1. A=0 → \(\lnot A=1\), A=1 → \(\lnot A=0\).

  2. \(A \land B = 0\), \(A \lor B = 1\), \(A \oplus B = 1\).

  3. \(\lnot(\lnot A) = A\).

  4. \(\lnot(A \lor B) = \lnot A \land \lnot B\).

  5. \(Y = A \oplus B\) (XOR — «ровно одна кнопка»).