Einführung in die Bit-Manipulation

Normalerweise arbeitet ein Programmierer mit Variablen der Datentypen int, float, double, String oder Collections wie Array, List, ArrayList und so weiter. In einigen Fällen müssen Programmierer viel tiefer in die Daten auf Byte- und Bitebene vordringen, um die Daten zu extrahieren und zu bearbeiten. Mit Sprachen wie Java und C # können Sie Daten auf Bitebene bearbeiten, dh Sie haben Zugriff auf ein bestimmtes Bit in einem Byte. In diesem Thema lernen wir die Bit-Manipulation in Java kennen.

Bei der Arbeit mit Datenkomprimierung und Datenverschlüsselung ist häufig eine Bitmanipulation erforderlich, bei der der Programmierer Daten auf Bitebene extrahieren muss, um die Originaldaten zu codieren, zu decodieren oder zu komprimieren. Es gibt viele andere Anwendungen der Bit-Manipulation, die wir später in diesem Artikel sehen werden.

Java unterstützt 3-Bit-Shift- und 4-Bit-Operatoren, um Operationen auf Bit-Ebene auszuführen. Diese Operatoren können für ganzzahlige Typen (int, short, long und byte) verwendet werden, um Operationen auf Bitebene auszuführen.

Java Bitwise- und Bitshift-Operatoren

OperatorBeschreibung
&Bitweises UND
|Bitweises ODER
~Bitweises Komplement
<<Linksverschiebung
>>Rechte Shifttaste
^Bitweises XOR
>>>Vorzeichenlose Rechtsverschiebung

Operatoren der Bit-Manipulation in Java

Schauen wir uns die Operatoren genauer an

1) Bitweises ODER

Dies ist ein binärer Operator, der 2 Operanden annimmt und mit dem Symbol “| “. Der bitweise Operator vergleicht die entsprechenden Bits der beiden Operanden. Wenn eines der Operandenbits 1 ist, ist der Ausgang 1, wenn nicht, 0.

Beispiel

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

Java-Programm

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

Ausgabe: 31

2) Bitweises UND

Dies ist auch ein bitweiser Operator, der 2 Operanden annimmt und mit dem Symbol "&" gekennzeichnet ist. Der bitweise Operator vergleicht die entsprechenden Bits der beiden Operanden. Wenn beide Operandenbits 1 sind, ist der Ausgang 1, ansonsten 0.

Beispiel

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

Java-Programm

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

Ausgabe: 11

3) Bitweise Ergänzung

Im Gegensatz zu den beiden anderen Operatoren, die wir bisher besprochen haben, nimmt dies nur einen Operanden und wird mit dem Symbol "~" bezeichnet. Dieser Operator invertiert das Bit des Operanden. Wenn das Operandenbit 0 ist, konvertiert es es in 1 und umgekehrt.

Beispiel

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

Java-Programm

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

Ausgabe: -16

Hinweis: Wenn Sie das Java-Programm ausführen, erhalten Sie -16 anstelle von 240 als Ausgabe, da der Compiler das Zweierkomplement dieser Zahl anzeigt, dh den negativen Begriff der Binärzahl.

Das Zweierkomplement einer beliebigen Zahl entspricht - (n + 1), wobei n die Zahl ist, deren Zweierkomplement berechnet werden soll. In unserem Fall ist das Zweierkomplement des Operanden 15 -16, was auch die Ausgabe des Programms ist.

4) Bitweises XOR

Bitweises XOR ist ein binärer Operator, der 2 Operanden akzeptiert und mit einem Symbol „^“ gekennzeichnet ist. Dieser Operator vergleicht die entsprechenden Bits der beiden Operanden. Wenn die entsprechenden Bits der beiden Operanden unterschiedlich sind, gibt es 1 als Ausgang, sonst 0.

Bitweiser XOR-Operator entspricht (Bitweises ODER + Bitweises Komplement)

Beispiel

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

Java-Programm

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

Ausgabe: 20

5) Signed Left Shift

Der bitweise Linksschiebeoperator verschiebt das Bitmuster um eine bestimmte Anzahl von Malen, die im Operanden angegeben sind, nach links. Der linke Shift-Operator ist mit dem Symbol "<<" gekennzeichnet.

Beispiel

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-Programm

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

Ausgabe: 246, 492, 984

6) Signed Right Shift

Der vorzeichenbehaftete Rechts-Shift-Operator funktioniert genauso wie der Links-Shift-Operator, nur dass Null-Bits zur höherwertigen Position verschoben werden.

Beispiel

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-Programm

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

Ausgabe: 61, 30, 15

7) Rechtsverschiebung ohne Vorzeichen

Der Rechtsschiebeoperator verschiebt Null um die im Operanden angegebene Anzahl von Bits nach links.

Java-Programm

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

Ausgabe : 61, 30, 15

Fazit - Bit Manipulation in Java

Nachdem wir nun das Ende des Artikels erreicht haben, fassen wir den wichtigsten Punkt zusammen, den wir in diesem Artikel besprochen haben. Wir haben gesehen, was ein bisschen Manipulation ist und welche Anwendungsfälle es gibt. Wir haben auch die verschiedenen Arten von bitweisen Operatoren (bitweises UND, bitweises ODER, bitweises Komplement und bitweises XOR) und Bitverschiebungsoperatoren (signierter Linksverschiebungsoperator, signierter Rechtsverschiebungsoperator und vorzeichenlose Rechtsverschiebungsoperatoren) zusammen mit einem Beispiel und einem Beispiel gelernt Java-Programm zur Erläuterung einzelner Operatoren.

Empfohlene Artikel

Dies ist eine Anleitung zur Bit-Manipulation in Java. Hier diskutieren wir die Java Bitwise- und Bitshift-Operatoren im Detail mit Beispielen und Java-Programmen und deren Ausgabe. Sie können auch den folgenden Artikel lesen, um mehr zu erfahren -

  1. Was ist Java Interface?
  2. Java-Tools
  3. Python-Frameworks
  4. Boolesche Operatoren in Java