Введение в битовую манипуляцию

Обычно программист работает с переменными типов данных, такими как 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-программами и их выходными данными. Вы также можете посмотреть следующую статью, чтобы узнать больше -

  1. Что такое интерфейс Java?
  2. Инструменты Java
  3. Python Frameworks
  4. Булевы операторы в Java