Introducere în manipularea biților

De obicei, un programator lucrează la variabile de tipuri de date precum int, float, double, String sau colecții precum Array, List, ArrayList și așa mai departe. În unele cazuri, programatorii trebuie să aprofundeze mult mai mult datele la octeți și la nivelul de biți pentru a extrage și manipula datele. Limbi precum Java și C # vă permit să manipulați datele la nivel de biți, ceea ce înseamnă că aveți acces la un bit specific într-un octet. În acest subiect, vom afla despre manipularea bitului în Java.

Manipularea biților este adesea necesară atunci când lucrează la Compresia datelor și criptarea datelor, unde programatorul trebuie să extragă date la nivel de biți pentru a codifica, decoda sau comprima datele originale. Există multe alte aplicații de manipulare a biților pe care le vom vedea mai târziu în acest articol.

Java acceptă schimbări pe 3 biți și 4 operatori în bit pentru a efectua operațiuni la nivel de biți. Acești operatori pot fi folosiți pe tipuri integrale (int, scurt, lung și byte) pentru a efectua operațiuni la nivel de biți.

Operatori Java Bitwise și Bitshift

OperatorDescriere
&În mod Bit AND
|OR în mod OR sau
~Complement cu bit
<<Shift stânga
>>Schimbare dreapta
^Bit-XOR
>>>Schimbarea dreptului nesemnat

Operatori de manipulare a biților în Java

hai să analizăm mai detaliat operatorii

1) OR în bit

Acesta este un operator binar care ia 2 operanțe și notat cu simbolul „| „. Operatorul cu bituri compară biții corespunzători din cele două operanțe. Dacă oricare dintre bitul operand este 1, atunci ieșirea este 1, dacă nu, va fi 0.

Exemplu

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise OR Operation of 15 and 27
00001111
| 00011011
________
00011111 = 31 (In decimal)

Programul Java

class BitwiseOR (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 | operand2;
System.out.println(output);
)
)

Rezultat: 31

2) Bit în sens AND

Acesta este, de asemenea, un operator bit, care ia 2 operanțe și notat cu simbolul „&”. operatorul cu bituri compară biții corespunzători din cele două operanțe. Dacă ambii biți operanzi sunt 1 atunci ieșirea este 1 altfel 0.

Exemplu

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise AND Operation of 15 and 27
00001111
| 00011011
________
00001011 = 11 (In decimal)

Programul Java

class BitwiseAND (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 & operand2;
System.out.println(output);
)
)

Rezultat: 11

3) Complement de biți

Spre deosebire de ceilalți doi operatori despre care am discutat până acum, acesta nu ia decât un operand și notat cu simbolul „~”. Acest operator inversează bitul operandului. Dacă bitul operand este 0, atunci îl transformă în 1 și invers.

Exemplu

15 = 00001111 (In Binary)
Bitwise complement Operation of 15
~ 00001111
________
11110000 = 240 (In decimal)

Programul Java

class BitwiseComplement (
public static void main(String() args) (
int operand= 15, output;
output= ~operand;
System.out.println(output);
)
)

Rezultat: -16

Notă: atunci când rulați programul Java veți primi -16 ca o ieșire în loc de 240, deoarece compilatorul arată complementul 2 al acelui număr, adică noțiunea negativă a numărului binar.

Complementul 2 al oricărui număr este echivalent cu - (n + 1) unde n este numărul al cărui complement al lui 2 trebuie calculat. În cazul nostru, complementul 2 al operandului 15 este -16, care este și rezultatul programului.

4) XOR bitwise

Bitwise XOR este un operator binar care ia 2 operanzi și notează cu simbolul „^”. acest operator compară biții corespunzători din cele două operanțe. Dacă biții corespunzători ai celor două operanzi sunt diferiți, acesta dă 1 ca ieșire altceva 0.

Operatorul XOR Bitwise este echivalent cu (Bitwise OR + Complement Bitwise)

Exemplu

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise XOR Operation of 15 and 27
00001111
00011011
________
00010100 = 20 (In decimal)

Programul Java

class BitwiseXor (
public static void main(String() args) (
int operand1= 15, operand2 = 27, output;
output = operand1 operand2;
System.out.println(output);
)
)

Rezultat: 20

5) Schimbarea stânga semnată

Operatorul în mișcare la stânga, schimbă modelul de biți spre stânga de un anumit număr de ori specificat în operand. Operatorul de schimb stânga este notat cu simbolul „<<”.

Exemplu

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)

Programul 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);
)
)

ieșire: 246, 492, 984

6) Schimbare dreaptă semnată

Operatorul de schimbare dreapta semnat funcționează exact la fel ca operatorul de schimb stânga doar că adaugă zero biți sunt mutați în poziția ridicată.

Exemplu

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)

Programul 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);
)
)

Rezultat: 61, 30, 15

7) Schimbarea dreptului nesemnat

Operatorul de deplasare dreapta trece de la zero la poziția din stânga, prin numărul anumit de biți specificat în operand.

Programul 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);
)
)

Rezultat : 61, 30, 15

Concluzie - Manipularea biților în Java

Acum că am ajuns la sfârșitul articolului, haideți să ne rezumăm la rezumatul punctului cheie pe care l-am discutat în acest articol. Am văzut care este un pic de manipulare și cazurile sale diferite de utilizare. Am învățat, de asemenea, diferitele tipuri de operatori bit (Bitwise AND, Bitwise OR, Bitwise Complement și Bitwise XOR) și operatori de schimb de biți (Semnat Left Shift Operator, Right Right Shift Operator și unsigned Right shift operator) împreună cu un exemplu și un exemplu Program Java care explică operatori individuali.

Articole recomandate

Acesta este un ghid pentru manipularea biților în Java. Aici discutăm în detaliu operatorii Java Bitwise și Bitshift cu exemple și programe Java și ieșirea acestuia. De asemenea, puteți consulta articolul următor pentru a afla mai multe -

  1. Ce este interfața Java?
  2. Instrumente Java
  3. Cadre Python
  4. Operatori boolezi din Java