Булева алгебра — это раздел математики и фундаментальная основа цифровой логики, которая широко применяется в программировании, особенно в низкоуровневых операциях и условных выражениях.
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++ булева логика тесно связана с битовыми операциями и системами условий.