logo
Информатика_ЗФ / 2013_Информатика УМО_легпром

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

Название логической операции

Оператор

математ.

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