Основные логические операторы

Логические операции

Примеры операторов сравнения в разных языках программирования

Операции сравнения

 

Операции сравнения называют ещё операциями отношения (relation operations), поскольку в них осуществляется оценка взаимосвязи (отношений) двух операндов. Под операндом понимается то, над чем выполняется операция.

В таблице 6 перечислены операторы, используемые для обозначения операций сравнения в языках программирования. Результат сравнения может быть либо истинным, либо ложным (Тruе или False). Приоритет операций сравнения ниже, чем у арифметических операций.

 

Таблица 6

Операция сравнения Оператор
Basic, Pascal С++, Java
равно = ==
не равно <> !=
больше > >
меньше < <
больше или равно >= >=
меньше или равно <= <=

 

 

Сложное высказывание можно построить из простых с помощью логических операций: отрицания, конъюнкции, дизъюнкции, импликации и логических выражений, представляющих собой комбинации логических операций.

Логические операции иногда называют булевыми, так как взяты они из булевой алгебры. Операндами в них выступают булевы величины и возвращают они тоже булевы значения. В таблице 7 приведены основные логические операторы, используемые в разных языках программирования, в порядке убывания приоритета. При этом следует отметить, что в разных языках программирования логические операции могут иметь разный приоритет по отношению к другим операциям – арифметическим и сравнения. Например, в Бейсике приоритет логических операций ниже, чем операций сравнения. В Паскале – наоборот, а приоритет оператора not даже выше, чем у арифметических операций.

Таблица 7

Название логической операции Оператор
математ. Basic, Pascal С++, Java
логическое отрицание «НЕ» (инверсия) ¯   Not !
логическое «И» (конъюнкция) Ù · And &&
логическое «ИЛИ» (дизъюнкция) Ú + Or | |

 

Простейший логический оператор – NOT. Он предшествует единственному операнду и возвращает его логическую противоположность – иначе говоря, «отрицает» операнд. Например, выражение NOT Тruе даёт в результате False (булево значение, обратное Тruе); а выражение NOT (4 < 3) – Тruе, так как условие (4 < 3) ложно. Кроме того, этот оператор обладает наивысшим приоритетом по сравнению с остальными булевыми операторами. Кстати, операция отрицания является унарной, или одноместной, в отличие от остальных логических операций, являющихся бинарными, или двуместными, т.е. выполняющими действия с двумя операндами.

Следующий (в порядке убывания приоритета) оператор – AND. Он возвращает True, только если оба операнда имеют значение True. По смыслу он соответствует английскому слову and (русскому и), что можно проиллюстрировать, например, таким утверждением: «Он получит эту должность, только если знает английский и разбирается в компьютерах».

Оператор OR возвращает True, если любой из двух операндов True или если оба True. И в этом случае логический смысл оператора совпадает с соответствующим словом в языке: «Я куплю этого кота, если он не дороже 50 долларовилиесли он – сиамской породы».

Аналогично операциям сравнения логические операции могут связать два или более отношения и возвратить истинную или ложную величину, используемую для управления ходом выполнения программы.

Пример 1. Определить, что сумма баллов S,набранная студентом на тестированиинаходится в пределах 60¸100 баллов, т.е. принадлежит интервалу [60,100]:

S >= 60 AND S <= 100.

Пример 2. Определить, что сумма баллов S,набранная студентом на тестировании,не входит в пределы 60¸100 баллов, т.е. находится вне интервала [60, 100] :

NOT (S >= 60 AND S <= 100);

или, что даёт тот же самый результат,

S < 60 OR S > 100.

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

1) сочетательный (ассоциативность):

(а OR b) OR с = а OR (b OR с);

(а AND b) AND с = а AND (b AND с).

2) переместительный (коммутативный):

а OR b = b OR а;

а AND b = b AND а.

3) распределительный (дистрибутивность конъюнкции и дизъюнкции относительно дизъюнкции и конъюнкции):

а AND (b OR с) = а AND b OR а AND с;

а OR b AND с = (а OR b) AND (а OR с).

Справедливы также следующие соотношения: NOT NOT a = a;
а OR а AND b = а; NOT a OR NOT b = NOT (a AND b) и др.

Логические операции могут производиться не только над булевыми величинами, но и над битами операндов. В этом случае логическая операция возвращает поразрядный результат, который либо истинен (1), либо ложен (0). В языках программирования могут существовать специальные операторы побитового выполнения логических операций. Например, в «Си++» и «Ява» поразрядным (побитовым) операциям НЕ, И, ИЛИ соответствуют операторы ~, &, | (сравните с операторами табл. 7).

В Бейсике используются только побитовые логические операции, а операнды представляются в восьми-, шестнадцати- или тридцатидвухразрядном дополнительном коде. При этом булевым значениям False и Тruе соответствуют десятичные значения 0 и -1, так, 0 – число, в котором все биты обнулены, а -1 – двоичное число, все биты которого установлены в 1 (см. табл. 3).

Операциям исключающее ИЛИ (неравнозначность), эквивалентность (равнозначность, ↔) и импликация (если то, →) в Бейсике соответствуют операторы XOR, EQV и IMP. Результат логической операции определяется поразрядно согласно таблице 8. Операторы приведены в порядке убывания их приоритета.

 

Таблица 8