Úvod do bitovej manipulácie

Programátor zvyčajne pracuje s premennými typov údajov, ako sú int, float, double, String alebo kolekcie ako Array, List, ArrayList a tak ďalej. V niektorých prípadoch musia programátori ísť oveľa hlbšie do dát na bajte a na bitovej úrovni, aby mohli extrahovať a manipulovať s údajmi. Jazyky ako Java a C # vám umožňujú manipulovať s údajmi na úrovni bitov, čo znamená, že máte prístup k určitému bitu v bajte. V tejto téme sa dozvieme viac o bitovej manipulácii v jazyku Java.

Manipulácia s bitmi sa často vyžaduje pri práci na kompresii údajov a šifrovaní údajov, kde programátor potrebuje extrahovať údaje na bitovej úrovni na kódovanie, dekódovanie alebo kompresiu pôvodných údajov. Existuje mnoho ďalších aplikácií manipulácie s bitmi, ktoré uvidíme neskôr v tomto článku.

Java podporuje 3-bitový posun a 4 bitové operátory na vykonávanie operácií na bitovej úrovni. Tieto operátory môžu byť použité na integrálne typy (int, short, long a byte) na vykonávanie operácií na úrovni bitov.

Operátory Java Bitwise a Bitshift

operátorpopis
&Bitovo A
|Bitový ALEBO
~Bitový doplnok
<<Lavy shift
>>Pravý posun
^Bitový XOR
>>>Nepodpísaný posun doprava

Operátori bitovej manipulácie v jazyku Java

Pozrime sa podrobnejšie na operátorov

1) Bitovo ALEBO

Jedná sa o binárny operátor, ktorý má 2 operandy a je označený symbolom „| ". Bitový operátor porovnáva zodpovedajúce bity týchto dvoch operandov. Ak ktorýkoľvek z bitov operandu je 1, potom výstup je 1, ak nie, bude to 0.

príklad

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

Program Java

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

Výstup: 31

2) Bitovo A

Toto je tiež bitový operátor, ktorý má 2 operandy a je označený symbolom „&“. bitový operátor porovnáva zodpovedajúce bity týchto dvoch operandov. Ak obidva bity operandu sú 1, výstup je 1, inak 0.

príklad

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

Program Java

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

Výstup: 11

3) Bitový doplnok

Na rozdiel od ostatných dvoch operátorov, o ktorých sme doteraz diskutovali, trvá iba jeden operand a je označený symbolom „~“. Tento operátor invertuje bit operandu. Ak je bit operandu 0, prevádza ho na 1 a naopak.

príklad

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

Program Java

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

Výstup: -16

Poznámka: Keď spustíte program Java, získate -16 ako výstup namiesto 240, pretože kompilátor zobrazí 2 doplnok tohto čísla, tj zápornú predstavu o binárnom čísle.

Doplnok ľubovoľného čísla 2 je ekvivalentný - (n + 1), kde n je číslo, ktorého doplnok 2 sa má vypočítať. V našom prípade je doplnok 2 operandu 15 -16, čo je tiež výstupom programu.

4) Bitový XOR

Bitwise XOR je binárny operátor, ktorý vezme 2 operandy a označí sa symbolom „^“. tento operátor porovnáva zodpovedajúce bity týchto dvoch operandov. Ak sa zodpovedajúce bity týchto dvoch operandov líšia, dáva ako výstup 1.

Operátor Bitwise XOR je ekvivalentný s (Bitwise OR + Bitwise Complement)

príklad

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

Program Java

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

Výstup: 20

5) Podpísaný ľavý posun

Operátor bitového posunu vľavo posúva bitový vzor doľava o určitý počet časov špecifikovaných v operande. Operátor ľavého radenia je označený symbolom „<<“.

príklad

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)

Program Java

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

výstup: 246, 492, 984

6) Podpísaný pravý posun

Podpísaný operátor pravého radenia pracuje úplne rovnako ako operátor ľavého radenia len v tom, že pridáva nulové bity, ktoré sú posunuté do polohy vysokého poradia.

príklad

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)

Program Java

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

Výstup: 61, 30, 15

7) Nepodpísaný posun doprava

Operátor pravého radenia posunie nulu do polohy úplne doľava o určitý počet bitov špecifikovaných v operande.

Program Java

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

Výstup : 61, 30, 15

Záver - bitová manipulácia v Jave

Teraz, keď sme dosiahli koniec článku, zhrneme zhrnutie kľúčového bodu, o ktorom sme diskutovali v tomto článku. Videli sme, čo je trochu manipulácia a aké sú rôzne prípady použitia. Dozvedeli sme sa tiež rôzne typy bitových operátorov (Bitwise AND, Bitwise OR, Bitwise Complement a Bitwise XOR) a bitové posuvné operátory (Signed Left Shift Operator, podpísaný Operátor Right Shift a nepodpísané Operátory Right Shift) spolu s príkladom a vzorkou Program Java vysvetľujúci jednotlivé operátory.

Odporúčané články

Toto je príručka pre bitové manipulácie v Jave. Tu podrobne diskutujeme operátorov Java Bitwise a Bitshift s príkladmi a programami Java a ich výstupmi. Viac informácií nájdete aj v nasledujúcom článku -

  1. Čo je rozhranie Java?
  2. Java Tools
  3. Python Frameworks
  4. Logické operátory v jazyku Java

Kategórie: