Introduktion til Bitmanipulation

Normalt fungerer en programmerer på variabler af datatyper som int, float, double, streng eller samlinger som Array, List, ArrayList og så videre. I nogle tilfælde er programmerere nødt til at gå meget dybere ind i dataene på byte og bitniveauet for at udtrække og manipulere dataene. Sprog som Java og C # giver dig mulighed for at manipulere data på bitniveauet, hvilket betyder, at du har adgang til en bestemt bit i en byte. I dette emne skal vi lære om Bitmanipulation i Java.

Bitmanipulation er ofte påkrævet, når man arbejder med datakomprimering og datakryptering, hvor programmereren har brug for at udpakke data på bitniveauet for at kode, dekode eller komprimere de originale data. Der er mange andre applikationer af Bitmanipulation, som vi vil se senere i denne artikel.

Java understøtter 3-bit skift og 4 bitvise operatører til at udføre operationer på bitniveauet. Disse operatører kan bruges på integrerede typer (int, kort, lang og byte) til at udføre operationer på bitniveauet.

Java Bitvis- og Bitshift-operatører

OperatørBeskrivelse
&Bitvis OG
|Bitvis ELLER
~Bitvis komplement
<<Venstre skift
>>Højre skift
^Bitvis XOR
>>>Ikke underskrevet højre skift

Operatører af bitmanipulation i Java

lad os se på operatørerne mere detaljeret

1) Bitvis ELLER

Dette er en binær operator, der tager 2 operander og betegnes med symbolet "| ”. Den bitvise operatør sammenligner de tilsvarende bits af de to operander. Hvis en af ​​operand bit er 1, så er output 1 hvis ikke, det vil være 0.

Eksempel

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

Java-program

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

Output: 31

2) Bitvis OG

Dette er også en bitvis operator, der tager 2 operander og betegnes med symbolet "&". den bitvise operatør sammenligner de tilsvarende bit af de to operander. Hvis begge operandbits er 1, er output 1 ellers 0.

Eksempel

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

Java-program

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

Output: 11

3) Bitvis komplement

I modsætning til de to andre operatører, som vi har diskuteret indtil videre, tager dette kun én operand og betegnes med symbolet "~". Denne operator inverterer biten af ​​operanden. Hvis operandbiten er 0, konverteres den til 1 og vice versa.

Eksempel

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

Java-program

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

Output: -16

Bemærk: Når du kører Java-programmet, får du -16 som en output i stedet for 240, fordi compiler viser 2's komplement til dette nummer, dvs. negativ opfattelse af det binære nummer.

2's komplement til ethvert tal er ækvivalent med - (n + 1), hvor n er det antal, hvis 2's komplement skal beregnes. I vores tilfælde er 2's komplement af operand 15 -16, som også er output fra programmet.

4) Bitvis XOR

Bitwise XOR er en binær operator, der tager 2 operander og betegner med et symbol “^”. denne operator sammenligner de tilsvarende bits af de to operander. Hvis de tilsvarende bits af de to operander er forskellige, giver det 1 som en udgang ellers 0.

Bitvis XOR-operator svarer til (Bitvis ELLER + Bitvis komplement)

Eksempel

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

Java-program

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

Output: 20

5) Underskrevet venstre skift

Den venstre skift bitvise operatør skifter bitmønsteret til venstre med et vist antal gange, der er specificeret i operanden. Den venstre skiftoperatør betegnes med symbolet "<<".

Eksempel

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

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

output: 246, 492, 984

6) Underskrevet højre skift

Signeret højre skift operatør fungerer nøjagtigt det samme som venstre skift operatør bare at den tilføjer nul bit skiftes til høj ordre position.

Eksempel

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

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

Output: 61, 30, 15

7) Ikke-underskrevet højre skift

Den højre skiftoperatør skifter nul til den venstre position med det bestemte antal bits, der er specificeret i operanden.

Java-program

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

Output : 61, 30, 15

Konklusion - Bitmanipulation i Java

Nu hvor vi er nået til slutningen af ​​artiklen, lad os pakke op ved at opsummere det centrale punkt, som vi har drøftet i denne artikel. Vi har set hvad en smule manipulation er og dens forskellige anvendelsessager. Vi har også lært de forskellige typer af bitvise operatører (Bitvis OG, Bitvis ELLER, Bitvis Komplement og Bitvis XOR) og bitskiftoperatører (Signeret Left Shift-operatør, underskrevet Right Shift Operator og usignerede Right Shift-operatører) sammen med et eksempel og en prøve Java-program, der forklarer de enkelte operatører.

Anbefalede artikler

Dette er en guide til Bitmanipulation i Java. Her diskuterer vi Java Bitvis- og Bitshift-operatører i detaljer med eksempler og Java-programmer og dens output. Du kan også se på den følgende artikel for at lære mere -

  1. Hvad er Java-interface?
  2. Java-værktøjer
  3. Python Frameworks
  4. Boolske operatører i Java

Kategori: