Логические операторы
Логические операторы языка Java выполняются только с операндами типа boolean .
Следующая таблица перечисляет логические операторы языка Java:
| Операция | Описание |
| & | Логическая операция И (AND) или конъюнкция |
| | | Логическая операция ИЛИ (OR) или дизъюнкция |
| ^ | Логическая операция исключающее ИЛИ (XOR) |
| ! | Логическая унарная операция НЕ (NOT) |
| || | Укороченная логическая операция ИЛИ (short-circuit) |
| && | Укороченная логическая операция И (short-circuit) |
| == | Равенство |
| != | Неравенство |
| &= | Логическая операция И с присваиванием |
| |= | Логическая операция ИЛИ с присваиванием |
| ^= | Логическая операция исключающее ИЛИ с присваиванием |
1. Логические операторы OR, AND, XOR, NOT.
Начнем с операций OR(|), AND(&), XOR(^), NOT(!). Операторы OR, AND, XOR являются бинарными — они требуют два оператора. NOT — это унарный оператор, только один оператор участвует в операции. Результаты выполнения этих логических операций представлены в следующей таблице:
| A | B | A|B | A&B |
A^B |
!A |
| false | false | false | false | false | true |
| true | false | true | false | true | false |
| false | true | true | false | true | true |
| true | true | true | true | false | false |
OR (|) — результат будет true , если хотя бы одно значение равно true . Пример: для того, чтобы забрать ребенка из садика, должна прийти либо мать, либо отец, либо оба — в любом случае результат будет положительный. Если же никто не придет, ребенка не заберут — результат будет отрицательный.
AND (&) — результат будет true , только если и A, и B равны true . Пример: для того чтобы свадьба состоялась, и невеста (A) и жених (B) должны явиться на бракосочетание, иначе оно не состоится.
XOR (^) — результат будет true , только если или A равно true , или В равно true . Пример: у двух друзей на двоих один велосипед, поездка на велосипеде состоится только если один из них поедет на нем. Вдвоем они ехать не могут.
NOT (!) — инвертирование значения. Если значение было true, то станет false , и наоборот.
Рассмотрим пример использования логических операторов:
public class BooleanLogic1 < public static void main(String[] args) < boolean a = true; boolean b = false; boolean c = a | b; boolean d = a & b; boolean e = a ^ b; boolean f = (!a & b) | (a & !b); boolean g = !a; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("a | b = " + c); System.out.println("a & b = " + d); System.out.println("a ^ b = " + e); System.out.println("(!a & b) | (a & !b) = " + f); System.out.println("!a header3">2. Укороченные логические операторы (short-circuit). Чаще всего в языке Java используются так называемые укороченные логические операторы (short-circuit):
|| - Укороченный логический оператор ИЛИ && - Укороченный логический оператор И Правый операнд сокращенных операций вычисляется только в том случае, если от него зависит результат операции, то есть если левый операнд конъюнкции имеет значение true, или левый операнд дизъюнкции имеет значение false.
В формальной спецификации языка Java укороченные логические операции называются условными.
В следующем примере правый операнд логического выражения вычисляться не будет, так как условие d!=0 не выполняется и нет смысла дальше вычислять это выражение:
public class BooleanLogic2 < public static void main(String[] args) < int d = 0; int num = 10; if (d != 0 && num / d >10) < System.out.println("num language-java">public class BooleanLogic3 < public static void main(String[] args) < int a = 1; int b = 2; int x = 3; System.out.print(a < x && x < b); // System.out.print(a < x < b);//Ошибка компиляции >>
3. Операции ==, !=.
Здесь все просто - чтобы сравнить два значения типа boolean , можно использовать знаки == (проверка на равенство) и != (проверка на неравенство):
public class BooleanLogic4 < public static void main(String[] args) < boolean b1 = true; boolean b2 = false; System.out.println(b1 == b2); System.out.println(b1 != b2); >>
4. Операции с присваиванием.
Также существуют операции с присваиванием для AND, OR, XOR. Посмотрим пример:
public class BooleanLogic5 < public static void main(String[] args) < boolean b1 = true; boolean b2 = true; b1 &= b2;//равносильно b1 = b1 & b2; System.out.println(b1); b1 |= b2; //равносильно b1 = b1 | b2; System.out.println(b1); b1 ^= b2; //равносильно b1 = b1 ^ b2; System.out.println(b1); >>
Презентацию с видео можно скачать на Patreon .
Основные логические операции (and, or, xor, not)

Бит — это минимальная единица измерения объёма информации, так как она хранит одно из двух значений — 0 (False) или 1 (True). False и True в переводе на русский ложь и истина соответственно. То есть одна битовая ячейка может находиться одновременно лишь в одном состоянии из возможных двух. Напомню, два возможных состояния битовой ячейки равны — 1 и 0.
Есть определённые операции, для манипуляций с битами. Эти операции называются логическими или булевыми операциями, названные в честь одного из математиков — Джорджа Буля (1815-1864), который способствовал развитию этой области науки.
Все эти операции могут быть применены к любому биту, независимо от того, какое он имеет значение — 0(нуль) или 1(единицу). Ниже приведены основные логические операции и примеры их использования.
Логическая операция И (AND)
Логическая операция И выполняется с двумя битами, назовем их a и b. Результат выполнения логической операции И будет равен 1, если a и b равны 1, а во всех остальных (других) случаях, результат будет равен 0. Смотрим таблицу истинности логической операции and.
a(бит 1)
b(бит 2)
a(бит 1) & b(бит 2)
0
0
0
0
1
0
1
0
0
1
1
1
Логическая операция ИЛИ (OR)
Логическая операция ИЛИ выполняется с двумя битами (a и b). Результат выполнения логической операции ИЛИ будет равен 0, если a и b равны 0 (нулю), а во всех остальных (других) случаях, результат равен 1 (единице). Смотрим таблицу истинности логической операции OR.
a(бит 1)
b(бит 2)
a(бит 1) | b(бит 2)
0
0
0
0
1
1
1
0
1
1
1
1
Логическая операция исключающее ИЛИ (XOR).
Обозначение XOR: ^
Логическая операция исключающее ИЛИ выполняется с двумя битами (a и b). Результат выполнения логической операции XOR будет равен 1 (единице), если один из битов a или b равен 1 (единице), во всех остальных случаях, результат равен 0 (нулю). Смотрим таблицу истинности логической операции исключающее ИЛИ.
a(бит 1)
b(бит 2)
a(бит 1) ^ b(бит 2)
0
0
0
0
1
1
1
0
1
1
1
0
Логическая операция НЕ (not)
Обозначение NOT: ~
Логическая операция НЕ выполняется с одним битом. Результат выполнения этой логической операции напрямую зависит от состояния бита. Если бит находился в нулевом состоянии, то результат выполнения NOT будет равен единице и наоборот. Смотрим таблицу истинности логической операции НЕ.
a(бит 1)
~a(отрицание бита)
0
1
1
0
Запомните эти 4 логические операции. Используя эти логические операции, мы можем получить любой возможный результат. Подробно об использовании логических операций в С++ читаем тут.
Логические операции And, Or, Not, Xor в Pascal.
Над переменными логического типа можно производить логические операции. В языке программирования Pascal существуют следующие логические операции : And – логическое умножение, Or – логическое сложение, Not – логическое отрицание, Xor – исключающее или.
program number18; uses crt; var X:integer; BOL, MEN, REZ: boolean; begin clrscr; X:=4; BOL:=X>3; MEN:=X
Строка №8. Переменной «BOL» присваиваем значение «X>3», и оно будет истиной т.к. 4>3.
Строка №9. Переменной «MEN» присваиваем значение «X
В строке №10 выводим сообщение на экран. У нас выведется TRUE.
В строке №11 выводим сообщение на экран. У нас выведется FALSE.
Строка №12. Переменной «REZ» мы присваиваем переменные «BOL» и «MEN». Между этими переменными стоит «and» (и). Это операция, которая называется логическое умножение (конъюнкция). Согласно законам булевской алгебры, комбинация 2-х логических переменных, связанных между собой союзом «and» (и) является истиной только в том случае, если обе переменные истинны. В нашем случае переменная «BOL» – истина, а переменная «MEN» – ложь, значит общий результат «REZ:=BOL and MEN» будет ложным.
Строка №14. Переменной «REZ» мы присваиваем переменные «BOL» и «MEN». Между этими переменными стоит «or» (или). Это операция, которая называется логическое сложение (дизъюнкция). Согласно законам булевской алгебры, комбинация 2-х логических переменных, связанных между собой союзом «or» (или) является ложным только в том случае, если обе переменные ложны. В нашем случае переменная «MEN» – ложь, а переменная «BOL» – истина, значит общий результат «REZ:=BOL or MEN» будет истинным.
Строка №16. Переменной «REZ» мы присваиваем переменную «BOL». Перед ней стоит «not» (не). Это операция, которая называется логическое отрицание (инверсия). Согласно законам булевской алгебры, результат операции будет противоположен той переменной, над которой эта операция производится. В нашем случае переменная «BOL» – истина, значит «REZ:=not BOL» будет ложным.
Строка №18. Переменной «REZ» мы присваиваем переменные «BOL» и «MEN». Между этими переменными стоит «xor» (либо). Это операция, которая называется исключающее или. Согласно законам булевской алгебры, комбинация 2-х логических переменных, связанных между собой союзом «xor» (либо) является истинным только в том случае, если обе переменные разные (т.е. одна истинна, другая ложна). В нашем случае переменная «MEN» – ложь, а переменная «BOL» – истина. Они разные, значит общий результат «REZ:=BOL xor MEN» будет истинным.
Основные логические операции. AND, NOT, OR и XOR (исключающее или)
В этой статье мы поговорим о некоторых битовых операциях. Рассмотрим основные из них: XOR (исключающее ИЛИ), AND (И), NOT (НЕ) а также OR (ИЛИ).
Как известно, минимальной единицей измерения информации является бит, который хранит одно из 2-х значений: 0 (False, ложь) либо 1 (True, истина). Таким образом, битовая ячейка может одновременно находиться лишь в одном из двух возможных состояний.
Для манипуляций с битами используют определённые операции — логические или булевые. Они могут применяться к любому биту, вне зависимости от того, какое у него значение — ноль или единица. Что же, давайте посмотрим на примеры использования трёх основных логических операций.
Логическая операция AND (и)
AND обозначается знаком & .
Оператор AND выполняется с 2-мя битами, возьмём, к примеру, a и b. Результат выполнения операции AND равен 1, если a и b равняются 1. В остальных случаях результат равен 0. Например, с помощью AND вы можете узнать, чётное число или нет.
Посмотрите на таблицу истинности операции AND:

Логическая операция OR (ИЛИ)
Оператор OR также выполняется с 2-мя битами (a и b). Результат равен 0, если a и b равны 0, иначе он равен 1. Смотрим таблицу истинности.

Логическая операция XOR (исключающее ИЛИ)
Оператор XOR обозначается ^ .
XOR выполняется с 2-мя битами (a и b). Результат выполнения операции XOR (исключающее ИЛИ) равен 1, когда один из битов b или a равен 1. В остальных ситуациях результат применения оператора XOR равен 0.
Таблица истинности логической операции для XOR (исключающее ИЛИ) выглядит так:

Используя XOR (исключающее ИЛИ), вы можете поменять значения 2-х переменных одинакового типа данных, не используя временную переменную. А ещё, посредством XOR можно зашифровать текст, например:
String msg = "This is a message"; char[] message = msg.toCharArray(); String key = ".*)"; String encryptedString = new String(); for(int i = 0; i
Согласен, XOR — далеко не самый надёжный метод шифрования, но это не значит, что его нельзя сделать частью какого-либо шифровального алгоритма.
Логическая операция NOT (НЕ)
Это побитовое отрицание, поэтому выполняется с одним битом и обозначается ~ .
Результат зависит от состояния бита. Если он в нулевом состоянии, то итог операции — единица и наоборот. Всё предельно просто.

Эти 4 логические операции следует запомнить в первую очередь, т. к. с их помощью можно получить практически любой возможный результат. Также существуют такие операции, как > (побитовый сдвиг вправо).