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

Обикновено програмист работи върху променливи типове данни като int, float, double, String или колекции като Array, List, ArrayList и така нататък. В някои случаи програмистите трябва да отидат много по-дълбоко в данните в байта и нивото на бита, за да извлекат и манипулират данните. Езици като Java и C # ви позволяват да манипулирате данни на ниво бит, което означава, че имате достъп до определен бит в байт. В тази тема ще научим за бит манипулацията в Java.

Манипулацията на битовете често се изисква при работа по компресиране на данни и криптиране на данни, където програмистът трябва да извлече данни на битово ниво, за да кодира, декодира или компресира оригиналните данни. Има много други приложения за манипулация на бита, които ще видим по-нататък в тази статия.

Java поддържа 3-битова смяна и 4 битови оператори за извършване на операции на ниво бит. Тези оператори могат да се използват на интегрални типове (int, short, long и byte) за извършване на операции на битово ниво.

Оператори по битова и битова смяна на Java

Операторописание
&Побитово И
|Побитови ИЛИ
~Побитово допълнение
<<Лява смяна
>>Десен смяна
^Побитово 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) Подписана дясна смяна

Подписаният оператор на дясна смяна работи точно както оператора на лява смяна, само че добавя нулеви битове се преместват в позицията на висок ред.

пример

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