Логическое исключающее ИЛИ (^) – результатом выражения A^B является true, если один операнд имеет значение true, а другой имеет значение false. Если оба операнда одновременно имеют значение true, или оба операнда одновременно имеют значение false, то возвращается значение false.
Унарное логическое отрицание (!) – результатом выражения! A является false, если операнд имеет значение true, и наоборот.
При помощи логических операторов можно формировать сложные выражения с участием нескольких операндов, например:
A&B&C – это выражение возвращает значение true, только если все три операнда одновременно имеют значение true.
A|B|C – это выражение возвращает true, если хотя бы один из операндов имеет значение true.
A&B|C – это выражение возвращает true, если A и B одновременно имеют значение true, или C имеет значение true. Оператор & имеет более высокий приоритет, поэтому сначала вычисляется значение выражения A&B, и результат вступает в логическую операцию ИЛИ c операндом C.
3.3.3 Битовые операторы
Битовые (или побитовые) операторы предназначены для операций с целыми числами на уровне их побитового представления.
Битовое И (&) – выражение A&B выполняется побитово, т.е. отдельно для каждого разряда. Если оба бита единичные, то в соответствующем разряде результата будет единица. Если хотя бы один из битов нулевой, в разряд результата записывается ноль.
Пример: 1101 & 0110 = 0100
Битовое ИЛИ (|) – выражение A|B выполняется побитово. Если хотя бы один из битов единичный, то в соответствующий разряд результата будет записана единица. Если оба бита нулевые, то в разряд результата будет записан ноль.
Пример: 1101 | 0110 = 1111
Битовое исключающее ИЛИ (^) – выражение A^B выполняется побитово. Если один из сравниваемых битов нулевой, а другой единичный, то в разряд результата записывается единица. Если оба бита нулевые, или оба бита единичные, то в разряд результата записывается ноль.
Пример: 1101 ^ 0110 = 1011
Битовый сдвиг вправо (>>) – результатом выполнения оператора A>> n является число, которое получилось сдвигом двоичного числа A вправо на n позиций. При сдвиге сохраняется знак числа, то есть младшие разряды теряются, а старшие заполняются содержимым знакового бита (0 для положительных чисел и 1 для отрицательных).
Примеры: (11010010)>> 2=11110100, (01010010)>> 2=00010100
Беззнаковый битовый сдвиг вправо (>>>) – результатом выполнения оператора A>>> n является число, которое получилось сдвигом двоичного числа A вправо на n позиций. При сдвиге НЕ сохраняется знак числа, то есть младшие разряды теряются, а старшие заполняются нулями.
Битовый сдвиг влево (<<) – результатом выполнения оператора A < 3.3.4 Операторы сравнения Если условие, заданное оператором сравнения, выполняется, то выражение возвращает значение true. В противном случае возвращается значение false. Все операторы сравнения бинарные – содержат только два операнда. Равно (==) – выражение A==B возвращает true, если значение операнда A равно значению операнда B. Обратите внимание, оператор сравнения состоит из двух знаков равенства. Если вы используете одиночный знак равенства, то получится не сравнение, а присвоение значения. Среда NetBeans предупредит вас о возможной ошибке, хотя с формальной точки зрения это логическая, а не синтаксическая ошибка. Не равно (!=) – выражение A!=B возвращает true, если значение операнда A отлично от значения операнда B. Больше (>)