Introduksjon til bitmanipulasjon

Vanligvis fungerer en programmerer på variabler av datatyper som int, float, double, String eller samlinger som Array, List, ArrayList og så videre. I noen tilfeller må programmerere gå mye dypere inn i dataene på byte og bitnivå for å trekke ut og manipulere dataene. Språk som Java og C # lar deg manipulere data på bitnivået, noe som betyr at du har tilgang til en bestemt bit i en byte. I dette emnet skal vi lære om bitmanipulering i Java.

Bitmanipulering er ofte nødvendig når man arbeider med datakomprimering og datakryptering der programmereren trenger å trekke ut data på bitnivået for å kode, dekode eller komprimere de originale dataene. Det er mange andre applikasjoner av Bitmanipulering som vi vil se senere i denne artikkelen.

Java støtter 3-bits skift og 4 bitvise operatører for å utføre operasjoner på bitnivå. Disse operatørene kan brukes på integrerte typer (int, kort, lang og byte) for å utføre operasjoner på bitnivået.

Java Bitvis og Bitshift-operatører

OperatørBeskrivelse
&Bitvis OG
|Bitvis ELLER
~Bitvis komplement
<<Venstre shift
>>Høyre skift
^Bitvis XOR
>>>Ikke signert høyre skift

Operatører av bitmanipulering i Java

la oss se nærmere på operatørene

1) Bitvis ELLER

Dette er en binær operatør som tar 2 operander og betegnes med symbolet "| “. Den bitvise operatøren sammenligner de tilsvarende bitene til de to operandene. Hvis noe av operandbiten er 1, er utgangen 1 hvis ikke vil den 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);
)
)

Utgang: 31

2) Bitvis OG

Dette er også en bitvis operatør som tar 2 operander og betegnes med symbolet "&". den bitvise operatøren sammenligner de tilsvarende bitene til de to operandene. Hvis begge operandbitene er 1, er utgangen 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);
)
)

Utgang: 11

3) Bitvis komplement

I motsetning til de to andre operatørene som vi har diskutert så langt, tar dette bare en operand og betegnes med symbolet "~". Denne operatøren inverterer biten av operanden. Hvis operandbiten er 0, konverterer den den til 1 og omvendt.

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

Utgang: -16

Merk: Når du kjører Java-programmet, vil du få -16 som en utgang i stedet for 240 fordi kompilatoren viser 2s komplement til det tallet, dvs. negativ forestilling om det binære tallet.

2s komplement av et hvilket som helst tall tilsvarer - (n + 1) der n er tallet hvis 2s komplement skal beregnes. I vårt tilfelle er 2-er-komplementet til operand 15 -16, som også er utgangen fra programmet.

4) Bitvis XOR

Bitwise XOR er en binær operatør som tar to operander og betegner med symbolet “^”. denne operatøren sammenligner de tilsvarende bitene til de to operandene. Hvis de korresponderende bitene til de to operandene er forskjellige at det gir 1 som utgang ellers 0.

Bitvis XOR-operatør tilsvarer (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);
)
)

Utgang: 20

5) Signert venstre skift

Den venstre skift bitvise operatøren forskyver bitmønsteret til venstre med et visst antall ganger spesifisert i operanden. Den venstre skiftoperatøren er betegnet 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);
)
)

utgang: 246, 492, 984

6) Signert høyre skift

Signert operatør til høyre skift fungerer nøyaktig det samme som venstre skift operatør bare at den legger til null biter blir forskjøvet til høy ordreposisjon.

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

Utgang: 61, 30, 15

7) Ikke signert høyre skift

Den høyre skiftoperatøren forskyver null til venstre plassering av det bestemte antallet biter som er spesifisert 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);
)
)

Utgang : 61, 30, 15

Konklusjon - Bitmanipulering i Java

Nå som vi har kommet til slutten av artikkelen, la oss slå sammen ved å oppsummere hovedpunktet som vi har diskutert i denne artikkelen. Vi har sett hva litt manipulering er og dens forskjellige brukssaker. Vi har også lært de forskjellige typene av bitvise operatører (Bitvis OG, Bitvis ELLER, Bitvis Komplement og Bitvis XOR) og bitskiftoperatører (Signert Left Shift-operatør, signert Right Shift Operator og usignerte Right Shift-operatører) sammen med et eksempel og et utvalg Java-program som forklarer enkeltoperatører.

Anbefalte artikler

Dette er en guide til Bitmanipulering i Java. Her diskuterer vi Java Bitvis- og Bitshift-operatørene i detalj med eksempler og Java-programmer og dens utdata. Du kan også se på følgende artikkel for å lære mer -

  1. Hva er Java-grensesnitt?
  2. Java-verktøy
  3. Python Frameworks
  4. Boolske operatører i Java