Булева алгебра — это раздел математики и фундаментальная основа цифровой логики, которая широко применяется в программировании, особенно в низкоуровневых операциях и условных выражениях.
true (1, Истина)false (0, Ложь)Логическое И (AND, && в C/C++)
bool result = a && b; // true только если оба операнда true
Логическое ИЛИ (OR, || в C/C++)
bool result = a || b; // false только если оба операнда false
Логическое НЕ (NOT, ! в C/C++)
bool result = !a; // инверсия значения
| A | B | A && B | A || B | !A |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 |
if (x > 0 && x < 100) {
// Выполняется только если x в диапазоне (0, 100)
}
// Вместо:
if (x) {
if (y) {
doSomething();
}
}
// Можно:
if (x && y) {
doSomething();
}
unsigned char flags = 0b10100100;
unsigned char mask = 0b00000100;
bool isSet = (flags & mask) == mask;
Коммутативность:
Ассоциативность:
Дистрибутивность:
Законы де Моргана:
// Число x находится вне диапазона [a, b]
if (x < a || x > b) {
// Действие
}
int absValue = (x >= 0) ? x : -x;
// Оригинальное условие:
if (!(userLoggedIn && hasPermission)) {
// Доступ запрещен
}
// По де Моргану:
if (!userLoggedIn || !hasPermission) {
// Доступ запрещен
}
Ленивые вычисления (short-circuit evaluation):
&&: если первый операнд false, второй не вычисляется||: если первый операнд true, второй не вычисляетсяНеявное приведение типов:
Побитовые vs логические операции:
& vs &&| vs ||Резюмируем: булева алгебра — это фундаментальная система логических операций, лежащая в основе условных выражений и принятия решений в программировании. Понимание её законов позволяет писать более чистый, эффективный и корректный код. В C/C++ булева логика тесно связана с битовыми операциями и системами условий.