Ú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átor | popis |
& | 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 -
- Čo je rozhranie Java?
- Java Tools
- Python Frameworks
- Logické operátory v jazyku Java