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ør | Beskrivelse |
& | 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 -
- Hva er Java-grensesnitt?
- Java-verktøy
- Python Frameworks
- Boolske operatører i Java