Inleiding tot bitmanipulatie

Meestal werkt een programmeur aan variabelen van gegevenstypen zoals int, float, double, String of collecties zoals Array, List, ArrayList enzovoort. In sommige gevallen moeten programmeurs veel dieper ingaan op de gegevens op byte en het bitniveau om de gegevens te extraheren en te manipuleren. Met talen als Java en C # kunt u gegevens op bitniveau manipuleren, wat betekent dat u toegang hebt tot een specifiek bit in een byte. In dit onderwerp gaan we meer te weten komen over bitmanipulatie in Java.

Bitmanipulatie is vaak vereist bij het werken aan gegevenscompressie en gegevenscodering waarbij de programmeur gegevens op bitniveau moet extraheren om de oorspronkelijke gegevens te coderen, decoderen of comprimeren. Er zijn veel andere toepassingen van bitmanipulatie die we later in dit artikel zullen zien.

Java ondersteunt 3-bit shift en 4 bitwise operators om bewerkingen op bitniveau uit te voeren. Deze operatoren kunnen worden gebruikt op integrale typen (int, short, long en byte) om bewerkingen op bitniveau uit te voeren.

Java Bitwise en Bitshift-operators

operatorBeschrijving
&Bitwise AND
|Bitgewijs OF
~Bitwise Complement
<<Linker shift
>>Rechts verschuiven
^Bitwise XOR
>>>Rechts niet-ondertekend

Exploitanten van bitmanipulatie in Java

laten we de operators nader bekijken

1) Bitgewijs OF

Dit is een binaire operator die 2 operanden gebruikt en wordt aangeduid met het symbool “| “. De bitsgewijze operator vergelijkt de overeenkomstige bits van de twee operanden. Als een van de operand-bits 1 is, is de uitvoer 1, zo niet, dan is deze 0.

Voorbeeld

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

Java-programma

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

Uitgang: 31

2) Bitgewijs EN

Dit is ook een bitsgewijze operator die 2 operanden gebruikt en wordt aangeduid met het symbool "&". de bitsgewijze operator vergelijkt de overeenkomstige bits van de twee operanden. Als beide operandbits 1 zijn, is de uitvoer 1, anders 0.

Voorbeeld

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

Java-programma

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

Uitgang: 11

3) Bitwise Complement

In tegenstelling tot de andere twee operatoren die we tot nu toe hebben besproken, heeft dit slechts één operand nodig en aangeduid met het symbool "~". Deze operator keert het bit van de operand om. Als de operand-bit 0 is, wordt deze omgezet in 1 en vice versa.

Voorbeeld

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

Java-programma

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

Uitgang: -16

Opmerking: wanneer u het Java-programma uitvoert, krijgt u -16 als uitvoer in plaats van 240, omdat de compiler het complement van 2 van dat getal aangeeft, dwz een negatief begrip van het binaire getal.

Het complement van 2 van een willekeurig getal is gelijk aan - (n + 1) waarbij n het getal is waarvan het complement van 2 moet worden berekend. In ons geval is het 2-complement van operand 15 -16, wat ook de output van het programma is.

4) Bitwise XOR

Bitwise XOR is een binaire operator die 2 operanden gebruikt en aangeeft met een symbool '^'. deze operator vergelijkt de overeenkomstige bits van de twee operanden. Als de corresponderende bits van de twee operanden verschillen, geeft dit 1 als uitvoer anders 0.

Bitwise XOR-operator is gelijk aan (Bitwise OR + Bitwise Complement)

Voorbeeld

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

Java-programma

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

Uitgang: 20

5) Ondertekende linkerverschuiving

De operator voor bitsgewijs naar links verplaatsen verplaatst het bitpatroon een bepaald aantal keren naar links in de operand naar links. De linker shift-operator wordt aangeduid met het symbool "<<".

Voorbeeld

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-programma

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

uitgang: 246, 492, 984

6) Rechts getekend

De ondertekende rechter shift-operator werkt precies hetzelfde als de linker shift-operator, alleen dat het nul bits toevoegt, worden naar de hoge orderpositie verplaatst.

Voorbeeld

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-programma

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

Uitgang: 61, 30, 15

7) Niet-ondertekende rechterverschuiving

De operator voor rechts verschuiven verplaatst nul naar de meest linkse positie met het bepaalde aantal bits dat is opgegeven in de operand.

Java-programma

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

Uitgang : 61, 30, 15

Conclusie - Bitmanipulatie in Java

Nu we het einde van het artikel hebben bereikt, zullen we het belangrijkste punt samenvatten dat we in dit artikel hebben besproken. We hebben gezien wat een beetje manipulatie is en de verschillende gebruiksscenario's. We hebben ook de verschillende soorten bitsgewijze operators (Bitwise AND, Bitwise OR, Bitwise Complement en Bitwise XOR) en bit shift-operators (ondertekend Left Shift-operator, ondertekend Right Shift-operator en niet-ondertekende Right shift-operators) en een voorbeeld en een voorbeeld geleerd Java-programma waarin afzonderlijke operators worden uitgelegd.

Aanbevolen artikelen

Dit is een handleiding voor bitmanipulatie in Java. Hier bespreken we de Java Bitwise- en Bitshift-operators in detail met voorbeelden en Java-programma's en de uitvoer ervan. U kunt ook het volgende artikel bekijken voor meer informatie -

  1. Wat is Java-interface?
  2. Java-hulpmiddelen
  3. Python Frameworks
  4. Booleaanse operatoren in Java