Этот вопрос изучает побитовые операции, которые позволяют работать с отдельными битами чисел. Они важны для низкоуровневой работы с данными.
Побитовые операции выполняются на уровне битов целых чисел. Примеры: & (побитовое И), | (побитовое ИЛИ), ^ (побитовое исключающее ИЛИ), ~ (побитовое отрицание), а также сдвиги <<, >>, >>>. Они используются для оптимизации операций, таких как флаги, маски и работа с бинарными данными.
Побитовые операции работают с битами чисел. Их часто используют для задач, где важно экономить память или работать напрямую с представлением данных в памяти.
Основные операции:
& (побитовое И): Устанавливает бит в 1, если оба соответствующих бита равны 1.
| (побитовое ИЛИ): Устанавливает бит в 1, если хотя бы один из соответствующих битов равен 1.
^ (побитовое исключающее ИЛИ): Устанавливает бит в 1, если соответствующие биты разные.
~ (побитовое отрицание): Инвертирует каждый бит числа.
Сдвиги:
<< (левый сдвиг): Сдвигает биты числа влево, заполняя справа нулями.
>> (правый сдвиг): Сдвигает биты числа вправо, заполняя левую сторону знаком числа.
>>> (беззнаковый правый сдвиг): Сдвигает вправо, заполняя нулями.
Пример:
int a = 5; // В двоичной системе: 0101
int b = 3; // В двоичной системе: 0011
System.out.println(a & b); // 1 (0001)
System.out.println(a | b); // 7 (0111)
System.out.println(a ^ b); // 6 (0110)
System.out.println(~a); // -6 (дополнение до двух)Когда использовать:
Работа с флагами (например, проверка разрешений).
Оптимизация кода, связанного с низкоуровневой обработкой данных.
Управление битовыми масками.