Normalerweise arbeitet ein Programmierer mit Variablen von Datentypen wie int, float, double, String oder Sammlungen wie Array, List, ArrayList usw. In manchen Fällen müssen Programmierer viel tiefer in die Daten auf Byte- und Bitebene vordringen, um die Daten zu extrahieren und zu manipulieren. Mit Sprachen wie Java und C# können Sie Daten auf Bitebene manipulieren, was bedeutet, dass Sie Zugriff auf ein bestimmtes Bit in einem Byte haben. In diesem Thema lernen wir etwas über Bit-Manipulation in Java.
Bei der Arbeit an der Datenkomprimierung und Datenverschlüsselung ist in Java häufig eine Bitmanipulation erforderlich, bei der der Programmierer Daten auf Bitebene extrahieren muss, um die Originaldaten zu kodieren, zu dekodieren oder zu komprimieren. Es gibt viele andere Anwendungen der Bit-Manipulation, die wir später in diesem Artikel sehen werden.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Java unterstützt 3-Bit-Verschiebung und 4 bitweise Operatoren, um Operationen auf Bitebene auszuführen. Diese Operatoren können für Integraltypen (int, short, long und byte) verwendet werden, um Operationen auf Bitebene auszuführen.
Im Folgenden sind die Operatoren aufgeführt:
Operator | Description |
& | Bitwise AND |
| | Bitwise OR |
~ | Bitwise Complement |
<< | Left Shift |
>> | Right Shift |
^ | Bitwise XOR |
>>> | Unsigned Right Shift |
Schauen wir uns die Operatoren genauer an.
Dies ist ein binärer Operator, der zwei Operanden benötigt und durch das Symbol „|“ gekennzeichnet ist „. Der bitweise Operator vergleicht die entsprechenden Bits der beiden Operanden. Wenn eines der Operandenbits 1 ist, ist die Ausgabe 1; Wenn nicht, ist es 0.
Beispiel
15 = 00001111 (Binär)
27 = 00011011 (Binär)
Bitweise ODER-Verknüpfung von 15 und 27
00001111
| 00011011
________
00011111 = 31 (in Dezimalzahl)
Java-Programm
public class BitwiseOR { public static void main(String[] args) { int operand1 = 15, operand2 = 27, output = operand1 | operand2; System.out.println(output); } }
Ausgabe:
Dies ist ebenfalls ein bitweiser Operator, der zwei Operanden benötigt und durch das Symbol „&“ gekennzeichnet ist. Der bitweise Operator vergleicht die entsprechenden Bits der beiden Operanden. Wenn beide Operandenbits 1 sind, ist die Ausgabe 1; andernfalls 0.
Beispiel
15 = 00001111 (Binär)
27 = 00011011 (Binär)
Bitweise UND-Verknüpfung von 15 und 27
00001111
| 00011011
________
00001011 = 11 (in Dezimalzahl)
Java-Programm
public class BitwiseAND { public static void main(String[] args) { int operand1 = 15, operand2 = 27, output = operand1 & operand2; System.out.println(output); } }
Ausgabe:
Im Gegensatz zu den beiden anderen Operatoren, die wir bisher besprochen haben, benötigt dieser nur einen Operanden und bezeichnet das Symbol „~“. Dieser Operator invertiert das Bit des Operanden. Wenn das Operandenbit 0 ist, wird es in 1 umgewandelt und umgekehrt.
Beispiel
15 = 00001111 (Binär)
Bitweise Komplementoperation von 15
~ 00001111
________
11110000 = 240 (in Dezimalzahl)
Java-Programm
public class BitwiseComplement { public static void main(String[] args) { int operand= 15, output; output= ~operand; System.out.println(output); } }
Ausgabe:
Bitweises XOR ist ein binärer Operator, der zwei Operanden akzeptiert und mit dem Symbol „^“ bezeichnet wird. Dieser Operator vergleicht die entsprechenden Bits der beiden Operanden. Wenn die entsprechenden Bits der beiden Operanden unterschiedlich sind, gibt er als Ausgabe 1 aus, andernfalls 0.
Bitweiser XOR-Operator entspricht (Bitweises ODER + Bitweises Komplement)
Beispiel
15 = 00001111 (Binär)
27 = 00011011 (Binär)
Bitweise XOR-Operation von 15 und 27
00001111
^ 00011011
________
00010100 = 20 (in Dezimalzahl)
Java-Programm
public class BitwiseXor { public static void main(String[] args) { int operand1= 15, operand2 = 27, output; output = operand1 ^ operand2; System.out.println(output); } }
Ausgabe:
Der bitweise Linksverschiebungsoperator verschiebt das Bitmuster um eine bestimmte im Operanden angegebene Anzahl von Malen nach links. Der Linksverschiebungsoperator wird durch das Symbol „<<“ gekennzeichnet.
Beispiel
123 (Binär: 01111011)
123 << 1 ergibt 246 (binär: 011110110)
123 << 2 ergibt 492 (binär: 0111101100)
123 << 3 ergibt 984 (Binär: 01111011000)
Java-Programm
public 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:
Der vorzeichenbehaftete Rechtsverschiebungsoperator funktioniert genauso wie der Linksverschiebungsoperator, nur dass er Nullbits hinzufügt und in die höherwertige Position verschiebt.
Beispiel
123 (Binär: 01111011)
123 >> 1 ergibt 61 (binär: 00111101)
123 >> 2 ergibt 30 (binär: 00011110)
123 >> 3 ergibt 15 (Binär: 00001111)
Java-Programm
public 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:
Der rechte Verschiebungsoperator verschiebt Null um die bestimmte Anzahl von Bits, die im Operanden angegeben ist, an die Position ganz links.
Java-Programm
public 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:
Da wir nun am Ende des Artikels angelangt sind, fassen wir zum Abschluss den wichtigsten Punkt zusammen, den wir in diesem Artikel besprochen haben. Wir haben gesehen, was eine Bitmanipulation ist und welche unterschiedlichen Anwendungsfälle sie hat. Wir haben auch die verschiedenen Arten von bitweisen Operatoren (Bitweises UND, bitweises ODER, bitweises Komplement und bitweises XOR) und Bitverschiebungsoperatoren (vorzeichenbehafteter linker Verschiebungsoperator, vorzeichenbehafteter rechter Verschiebungsoperator und vorzeichenlose rechte Verschiebungsoperatoren) zusammen mit einem Beispiel und einem Muster kennengelernt Java-Programm, das einzelne Operatoren erklärt.
Das obige ist der detaillierte Inhalt vonBitmanipulation in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!