Найти тему
DEBAGanov

Java 692. Какие побитовые операции вы знаете?

В Java есть несколько побитовых операций, которые могут быть полезны при работе с битами двоичных чисел. Некоторые из них перечислены ниже:

  • & (логическое И): возвращает бит 1 только в том случае, если оба операнда имеют значение 1, в противном случае возвращает 0.
  • | (логическое ИЛИ): возвращает бит 1 только в том случае, если хотя бы один из операндов имеет значение 1, в противном случае возвращает 0.
  • ^ (исключающее ИЛИ): возвращает бит 1 только в том случае, если только один из операндов имеет значение 1, в противном случае возвращает 0.
  • ~ (унарный оператор НЕ): инвертирует значения всех битов операнда.
  • << (левый сдвиг): сдвигает биты операнда влево на заданное количество позиций.
  • >> (правый сдвиг с сохранением знака): сдвигает биты операнда вправо на заданное количество позиций, при этом знак операнда сохраняется.
  • >>> (беззнаковый правый сдвиг): сдвигает биты операнда вправо на заданное количество позиций, при этом знак операнда не сохраняется.

Примеры:

Побитовый AND (&) - возвращает бит, который установлен в обоих операндах.

int a = 5;
int b = 3;
int c = a & b; // c будет равно 1

Побитовый OR (|) - возвращает бит, который установлен хотя бы в одном из операндов. Например:

int a = 5;
int b = 3;
int c = a | b; // c будет равно 7

Побитовый XOR (^) - возвращает бит, который установлен только в одном из операндов. Например:

int a = 5;
int b = 3;
int c = a ^ b; // c будет равно 6

Побитовый NOT (~) - инвертирует все биты операнда. Например:

int a = 5;
int b = ~a; // b будет равно -6

Сдвиг вправо (>>) - сдвигает биты операнда вправо на указанное число позиций. Например:

int a = 10;
int b = a >> 2; // b будет равно 2

Сдвиг влево (<<) - сдвигает биты операнда влево на указанное число позиций. Например:

int a = 10;
int b = a << 2; // b будет равно 40

Сдвиг вправо с заполнением нулями (>>>) - сдвигает биты операнда вправо на указанное число позиций, при этом заполняет освободившиеся позиции нулями. Например:

int a = -10;
int b = a >>> 2;

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov