Введение в битовую манипуляцию
Обычно программист работает с переменными типов данных, такими как int, float, double, String или коллекциями, такими как Array, List, ArrayList и так далее. В некоторых случаях программистам нужно гораздо глубже изучать данные на уровне байтов и битов, чтобы извлекать и манипулировать данными. Такие языки, как Java и C #, позволяют вам манипулировать данными на битовом уровне, что означает, что у вас есть доступ к определенному биту в байте. В этой теме мы собираемся узнать о битовой манипуляции в Java.
Битовая манипуляция часто требуется при работе со сжатием данных и шифрованием данных, когда программисту необходимо извлекать данные на уровне битов для кодирования, декодирования или сжатия исходных данных. Есть много других приложений битовых манипуляций, которые мы увидим позже в этой статье.
Java поддерживает 3-битный сдвиг и 4 побитовых оператора для выполнения операций на битовом уровне. Эти операторы могут использоваться на целочисленных типах (int, short, long и byte) для выполнения операций на уровне битов.
Битовые операторы Java и операторы Bitshift
оператор | Описание |
& | Побитовое И |
| | Побитовое ИЛИ |
~ | Побитовое дополнение |
<< | Сдвиг влево |
>> | Сдвиг вправо |
^ | Побитовый XOR |
>>> | Беззнаковое правое смещение |
Операторы битовой манипуляции в Java
давайте посмотрим на операторов более подробно
1) Побитовое ИЛИ
Это бинарный оператор, который принимает 2 операнда и обозначается символом «| «. Побитовый оператор сравнивает соответствующие биты двух операндов. Если какой-либо бит операнда равен 1, то на выходе будет 1, если не будет 0.
пример
15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise OR Operation of 15 and 27
00001111
| 00011011
________
00011111 = 31 (In decimal)
Java программа
class BitwiseOR (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 | operand2;
System.out.println(output);
)
)
Выход: 31
2) Побитовое И
Это также побитовый оператор, который принимает 2 операнда и обозначается символом «&». побитовый оператор сравнивает соответствующие биты двух операндов. Если оба бита операнда равны 1, тогда выходной сигнал равен 1, иначе 0.
пример
15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise AND Operation of 15 and 27
00001111
| 00011011
________
00001011 = 11 (In decimal)
Java программа
class BitwiseAND (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 & operand2;
System.out.println(output);
)
)
Выход: 11
3) Побитовое дополнение
В отличие от двух других операторов, которые мы обсуждали до сих пор, он принимает только один операнд и обозначается символом «~». Этот оператор инвертирует бит операнда. Если бит операнда равен 0, он преобразует его в 1 и наоборот.
пример
15 = 00001111 (In Binary)
Bitwise complement Operation of 15
~ 00001111
________
11110000 = 240 (In decimal)
Java программа
class BitwiseComplement (
public static void main(String() args) (
int operand= 15, output;
output= ~operand;
System.out.println(output);
)
)
Выход: -16
Примечание: когда вы запустите Java-программу, вы получите -16 в качестве вывода вместо 240, потому что компилятор показывает 2-е дополнение этого числа, то есть отрицательное представление двоичного числа.
Дополнение 2 любого числа эквивалентно - (n + 1), где n - число, чье дополнение 2 должно быть вычислено. В нашем случае дополнение 2 операнда 15 равно -16, что также является выходом программы.
4) Побитовый XOR
Побитовый XOR - это бинарный оператор, который принимает 2 операнда и обозначается символом «^». этот оператор сравнивает соответствующие биты двух операндов. Если соответствующие биты двух операндов различны, это дает 1 в качестве выхода, иначе 0.
Побитовый оператор XOR эквивалентен (Побитовое ИЛИ + Побитовое дополнение)
пример
15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise XOR Operation of 15 and 27
00001111
00011011
________
00010100 = 20 (In decimal)
Java программа
class BitwiseXor (
public static void main(String() args) (
int operand1= 15, operand2 = 27, output;
output = operand1 operand2;
System.out.println(output);
)
)
Выход: 20
5) Подписанный левый сдвиг
Битовый оператор сдвига влево сдвигает битовую комбинацию влево на определенное количество раз, указанное в операнде. Оператор сдвига влево обозначается символом «<<».
пример
123 (In binary: 01111011)
123 << 1 evaluates to 246 (In binary: 011110110)
123 << 2 evaluates to 492 (In binary: 0111101100)
123 << 3 evaluates to 984 (In binary:01111011000)
Java программа
class LeftShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand << 1);
System.out.println(operand << 2);
System.out.println(operand << 3);
)
)
выход: 246, 492, 984
6) Подпись вправо Shift
Оператор со смещением вправо со знаком работает точно так же, как и оператор со смещением влево, но добавляет, что нулевые биты сдвинуты в старшую позицию.
пример
123 (In binary: 01111011)
123 >> 1 evaluates to 61 (In binary: 00111101)
123 >> 2 evaluates to 30 (In binary: 00011110)
123 >> 3 evaluates to 15 (In binary:00001111)
Java программа
class RightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >> 1);
System.out.println(operand >> 2);
System.out.println(operand >> 3);
)
)
Выход: 61, 30, 15
7) Беззнаковое смещение вправо
Оператор сдвига вправо сдвигает ноль в крайнее левое положение на определенное количество бит, указанное в операнде.
Java программа
class UnSignedRightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >>> 1);
System.out.println(operand >>> 2);
System.out.println(operand >>> 3);
)
)
Выход : 61, 30, 15
Вывод - Манипулирование битами в Java
Теперь, когда мы достигли конца статьи, давайте подведем итоги, обобщив ключевой момент, который мы обсудили в этой статье. Мы видели, что такое небольшая манипуляция и ее различные варианты использования. Мы также изучили различные типы побитовых операторов (Побитовое И, Побитовое ИЛИ, Побитовое дополнение и Побитовое XOR) и Операции сдвига битов (Оператор со сдвигом влево, Оператор со сдвигом вправо и Операции вправо без знака) вместе с примером и примером. Java программа, объясняющая отдельных операторов.
Рекомендуемые статьи
Это руководство по битовой манипуляции в Java. Здесь мы обсудим побитовые операторы Java и операторы Bitshift подробно с примерами и Java-программами и их выходными данными. Вы также можете посмотреть следующую статью, чтобы узнать больше -
- Что такое интерфейс Java?
- Инструменты Java
- Python Frameworks
- Булевы операторы в Java