Úvod do bitové manipulace

Programátor obvykle pracuje s proměnnými datových typů, jako jsou int, float, double, String nebo kolekce jako Array, List, ArrayList atd. V některých případech musí programátoři jít mnohem hlouběji do dat na bajtu a na bitové úrovni, aby mohli extrahovat a manipulovat s daty. Jazyky jako Java a C # vám umožňují manipulovat s daty na úrovni bitů, což znamená, že máte přístup k určitému bitu v bajte. V tomto tématu se dozvíme o bitové manipulaci v Javě.

Bitová manipulace je často vyžadována při práci na kompresi dat a šifrování dat, kde programátor potřebuje extrahovat data na bitové úrovni, aby kódoval, dekódoval nebo komprimoval původní data. Existuje mnoho dalších aplikací manipulace s bitem, které uvidíme později v tomto článku.

Java podporuje 3bitové posuny a 4 bitové operátory pro provádění operací na bitové úrovni. Tyto operátory lze použít pro integrální typy (int, short, long a byte) k provádění operací na úrovni bitů.

Operátory Java Bitwise a Bitshift

OperátorPopis
&Bitově A
|Bitově NEBO
~Bitový doplněk
<<Levý Shift
>>Pravý posun
^Bitový XOR
>>>Nepřihlášený pravý posun

Operátoři bitové manipulace v Javě

Pojďme se na operátory podívat podrobněji

1) Bitově NEBO

Toto je binární operátor, který bere 2 operandy a je označen symbolem „| “. Bitový operátor porovná odpovídající bity obou operandů. Pokud kterýkoli z bitů operandu je 1, pak výstup je 1, pokud ne, bude to 0.

Pří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) Bitově A

Toto je také bitový operátor, který vezme 2 operandy a je označen symbolem „&“. bitový operátor porovná odpovídající bity obou operandů. Pokud jsou oba bity operandu 1, je výstupem 1 jinak 0.

Pří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ý doplněk

Na rozdíl od ostatních dvou operátorů, o kterých jsme dosud diskutovali, to trvá pouze jeden operand a je označeno symbolem „~“. Tento operátor invertuje bit operandu. Pokud je bit operandu 0, převede jej na 1 a naopak.

Pří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: Když spustíte program Java, dostanete -16 jako výstup namísto 240, protože kompilátor zobrazí 2 doplněk tohoto čísla, tj. Negativní představu o binárním čísle.

Doplněk libovolného čísla 2 odpovídá - (n + 1), kde n je číslo, jehož doplněk 2 se má vypočítat. V našem případě je doplněk 2 operandu 15 -16, což je také výstup programu.

4) Bitové XOR

Bitwise XOR je binární operátor, který bere 2 operandy a označuje symbolem „^“. tento operátor porovná odpovídající bity obou operandů. Pokud se odpovídající bity obou operandů liší, dává 1 jako výstup jinak 0.

Operátor Bitwise XOR je ekvivalentem (Bitwise OR + Bitwise Complement)

Pří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) Podepsaný posun doleva

Operátor bitového posunu doleva posunuje bitový vzor doleva o určitý počet časů specifikovaných v operandu. Operátor levého řazení je označen symbolem „<<“.

Pří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) Podepsaný pravý posun

Podepsaný operátor pravého posunu pracuje úplně stejně jako operátor levého posunu jen proto, že přidává nulové bity, které jsou posunuty do polohy vysokého řádu.

Pří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) Nepřiřazený pravý posun

Operátor pravého řazení posune nulu do pozice zcela vlevo o určitý počet bitů specifikovaných v operandu.

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ávěr - Bitová manipulace v Javě

Nyní, když jsme dosáhli konce článku, pojďme se shrnout shrnutím klíčového bodu, o kterém jsme diskutovali v tomto článku. Viděli jsme, co je trochu manipulace a jaké jsou různé případy použití. Také jsme se naučili různé typy bitových operátorů (Bitwise AND, Bitwise OR, Bitwise Complement a Bitwise XOR) a bitové posuvné operátory (Signed Left Shift Operator, Signed Right Shift Operator a unsigned Right Shift Operators) spolu s příkladem a ukázkou Program Java vysvětlující jednotlivé operátory.

Doporučené články

Toto je průvodce po bitové manipulaci v Javě. Zde diskutujeme podrobně operátory Java Bitwise a Bitshift s příklady a programy Java a jejich výstupy. Další informace naleznete také v následujícím článku -

  1. Co je rozhraní Java?
  2. Java Tools
  3. Python Frameworks
  4. Booleovské operátory v Javě

Kategorie: