Углубление · Булева алгебра ← Глава II
Углубление к главе II

Булева алгебра и логические схемы.

Логика — это алгебра. Значения {0, 1} со связками ∧, ∨, ¬ образуют булеву алгебру со своими законами. А каждая связка — это вентиль; из вентилей собираются схемы, и так логика становится вычислением в железе. Здесь сходятся алгебра из главы I и логика из главы II.

{0,1}булева алгебра
∧∨¬вентили
NANDполнота
ALGEBRA0 · 1 ∧ ∨ ¬gate ∧ связка = вентиль
№ 00Идея

Истина и ложь — это 1 и 0

Запишем истину как 1, ложь как 0. Тогда «и» становится операцией $\wedge$, «или» — $\vee$, «не» — $\neg$, и у них оказываются законы, как у сложения и умножения. Это булева алгебра — алгебраическая структура на двух элементах. Логика из главы II и алгебра из главы I здесь — одно и то же.

Только с алгеброй начинается строгое математическое учение. — Н. И. Лобачевский
⊕
Законы

Алгебра двух значений

Булева алгебра — это решётка с дополнением: коммутативность, ассоциативность, дистрибутивность, нейтральные элементы и дополнение. Плюс знаменитые законы де Моргана.

$a\vee 0=a,\quad a\wedge 1=a,\qquad a\vee\neg a=1,\quad a\wedge\neg a=0$

$a\wedge(b\vee c)=(a\wedge b)\vee(a\wedge c)$

$\neg(a\wedge b)=\neg a\vee\neg b,\qquad \neg(a\vee b)=\neg a\wedge\neg b$

≡Зачем законы

Они позволяют упрощать выражения, не меняя их значения — то есть оптимизировать логику (и схемы) алгебраически, как многочлены.

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

«Не (A и B)» = «не A или не B». Это ежедневный инструмент при работе с условиями в коде и при проектировании схем.

⛒
Логические вентили

Связка, воплощённая в железе

Каждая связка — это вентиль: элемент, выдающий 0 или 1 по входам. Из базовых (И, ИЛИ, НЕ) и производных (И-НЕ, ИЛИ-НЕ, исключающее ИЛИ) собирается вся цифровая логика.

PORTAEAND · OR · NOT · XOR вход → выход0/1 AND ∧ OR ∨ NOT ¬ XOR ⊕ одного вентиля И-НЕ (NAND) достаточно, чтобы выразить все остальные
Базовые вентили И, ИЛИ, НЕ и производный «исключающее ИЛИ». Замечательно: NAND функционально полон — из него одного строится любая логика.
▦
Схемы

Из вентилей — вычисление

Соединяя вентили, получаем схему, которая считает. Простейший пример — полусумматор: складывает два бита, выдавая сумму и перенос.

SEMIADDERa + b XOR → суммаAND → перенос ab XOR сумма AND перенос
Полусумматор: сумма = a ⊕ b (XOR), перенос = a ∧ b (AND). Из таких блоков собираются сумматоры, а из них — арифметика процессора.

Вот и вся связь: высказывания → булева алгебра → вентили → схемы → вычисление. Логика — не отвлечённая дисциплина, а буквальный чертёж того, как машина считает. Эта же логика, поднятая на уровень программ, даёт корректность — о доказательстве программ см. соседнее углубление.

Углубление: логика Хоара — доказательство программчитать →
№ 05Итог

Логика, ставшая железом

Истина и ложь — это 1 и 0; связки — операции булевой алгебры со своими законами; каждая связка — вентиль; из вентилей собираются схемы, которые считают. Так алгебра из главы I и логика из главы II встречаются в самом основании вычислений.

Математик, который не является в известной мере поэтом, никогда не будет настоящим математиком. — К. Вейерштрасс
№ 06Связи

Куда дальше