Introduktion till bitmanipulation

Vanligtvis fungerar en programmerare på variabler av datatyper som int, float, double, String eller samlingar som Array, List, ArrayList och så vidare. I vissa fall måste programmerare gå mycket djupare in i data på byte och bitnivå för att extrahera och manipulera data. Språk som Java och C # låter dig manipulera data på bitnivån, vilket innebär att du har tillgång till en specifik bit i en byte. I det här ämnet kommer vi att lära oss om bitmanipulation i Java.

Bitmanipulation krävs ofta när man arbetar med datakomprimering och datakryptering där programmeraren måste extrahera data på bitnivån för att koda, avkoda eller komprimera originaldata. Det finns många andra applikationer av Bit-manipulation som vi kommer att se senare i den här artikeln.

Java stöder 3-bitars shift och 4 bitvis operatörer för att utföra operationer på bitnivån. Dessa operatörer kan användas på integrerade typer (int, kort, lång och byte) för att utföra operationer på bitnivån.

Java Bitvis- och Bitshift-operatörer

OperatörBeskrivning
&Bitvis OCH
|Bitvis ELLER
~Komplettering av bitvis
<<Vänster Shift
>>Rätt skift
^Bitvis XOR
>>>Osignerad högerskift

Operatörer av bitmanipulation i Java

låt oss titta på operatörerna mer detaljerat

1) Bitvis ELLER

Detta är en binär operatör som tar två operander och betecknas med symbolen "| ”. Den bitvisa operatören jämför de motsvarande bitarna hos de två operandema. Om någon av operandbitarna är 1 så är utgången 1 om inte kommer den att vara 0.

Exempel

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

Utgång: 31

2) Bitvis OCH

Detta är också en bitvis operatör som tar två operander och betecknas med symbolen "&". den bitvisa operatören jämför de motsvarande bitarna hos de två operandema. Om båda operandbitarna är 1 är utgången 1 annars 0.

Exempel

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

Utgång: 11

3) Komplementering av bitvis

Till skillnad från de andra två operatörer som vi har diskuterat hittills tar detta bara en operand och betecknas med symbolen "~". Denna operatör inverterar biten av operand. Om operandbiten är 0, konverterar den till 1 och vice versa.

Exempel

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

Utgång: -16

Obs! När du kör Java-programmet får du -16 som en utgång istället för 240 eftersom kompilatorn visar 2: s komplement av det numret, dvs. negativt begrepp om det binära numret.

2: s komplement av valfritt antal motsvarar - (n + 1) där n är antalet vars 2: s komplement ska beräknas. I vårt fall är 2: s komplement av operand 15 -16 som också är utgången från programmet.

4) Bitvis XOR

Bitvis XOR är en binär operatör som tar två operander och betecknar med en symbol “^”. denna operatör jämför de motsvarande bitarna av de två operandema. Om motsvarande bitar av de två operandema är olika att det ger 1 som en utgång annars 0.

Bitvis XOR-operatör motsvarar (Bitvis ELLER + Bitvis komplement)

Exempel

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

Utgång: 20

5) Signerad vänsterskift

Den vänstra skiftbitvisa operatören skifter bitmönstret till vänster med ett visst antal gånger som anges i operand. Den vänstra skiftoperatören betecknas med symbolen "<<".

Exempel

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

utgång: 246, 492, 984

6) Signerad högerväxling

Undertecknad högerväxeloperatör fungerar exakt samma som vänsterförskjutningsoperatör bara för att den lägger till nollbitar flyttas till högre ordningsläge.

Exempel

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

Utgång: 61, 30, 15

7) Osignerad högerskift

Den högra växlingsoperatören förskjuter noll till det vänstra läget med det visade antalet bitar som anges i operand.

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

Utgång : 61, 30, 15

Slutsats - Bitmanipulation i Java

Nu när vi har kommit till slutet av artikeln, låt oss samla in genom att sammanfatta den viktigaste punkten som vi har diskuterat i den här artikeln. Vi har sett vad lite manipulation är och dess olika användningsfall. Vi har också lärt oss de olika typerna av bitvisa operatörer (Bitvis OCH, Bitvis ELLER, Bitvis Komplement och Bitvis XOR) och bitskiftoperatörer (Signerad Left Shift-operatör, signerad Right Shift Operator och osignerade Right Shift-operatörer) tillsammans med ett exempel och ett prov Java-program som förklarar enskilda operatörer.

Rekommenderade artiklar

Detta är en guide till Bitmanipulation i Java. Här diskuterar vi Java Bitvis- och Bitshift-operatörer i detalj med exempel och Java-program och dess utdata. Du kan också titta på följande artikel för att lära dig mer -

  1. Vad är Java-gränssnitt?
  2. Java-verktyg
  3. Python Frameworks
  4. Booleska operatörer i Java

Kategori: