1. Bitweiser &Operator

Wir haben zuvor gesagt, dass alle Daten in einer binären Darstellung im Speicher gespeichert werden. Vor langer Zeit haben sich Programmierer viele interessante Möglichkeiten ausgedacht, mit Binärzahlen zu arbeiten. Java verfügt beispielsweise über logische Operatoren, die mit den Bits der binären Darstellung einer Zahl arbeiten: &(AND), | (OR), ~(NOT oder Komplement) und ^(XOR – exklusives Oder).

a & b
Bitweiser &(AND) Operator

Dieser Operator ist dem logischen &Operator (AND) sehr ähnlich, wird jedoch durch ein einzelnes kaufmännisches Und-Zeichen und nicht durch zwei gekennzeichnet:

Und es wird auf einzelne Bits angewendet. Jeder Operand wird als Array von Bits behandelt und das ite Bit des Ergebnisses wird unter Verwendung des iten Bits jedes der beiden Operanden berechnet.

Das erste Bit des Ergebnisses wird basierend auf dem ersten Bit der Zahl a und dem ersten Bit der Zahl berechnet b, das zweite Bit – basierend auf dem zweiten Bit der Zahl a und dem zweiten Bit der Zahl busw.

Der &(AND)-Operator bedeutet „das resultierende Bit ist nur dann gleich eins, wenn das entsprechende Bit der Zahl agleich eins ist ANDund das entsprechende Bit der Zahl bgleich eins ist“:

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

Beispiele:

Beispiel Ergebnis
0b0011 & 0b1010
0b0010
0b1111 & 0b0000
0b0000
0b1010 & 0b0101
0b0000
0b1111 & 0b1010
0b1010

2. Bitweiser |Operator

Dieser Operator ist dem logischen |Operator (ODER) sehr ähnlich, nur wird er durch eine einzelne vertikale Linie und nicht durch zwei gekennzeichnet:

a | b

Und es wird auf einzelne Bits angewendet. Jeder Operand wird als Array von Bits behandelt und das i-te Bit des Ergebnisses wird anhand des i-ten Bits jedes der beiden Operanden berechnet.

Der bitweise |Operator (OR) bedeutet „das resultierende Bit ist gleich eins, wenn das entsprechende Bit der Zahl agleich eins ist, ist ORdas entsprechende Bit der Zahl bgleich eins“:

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

Beispiele:

Beispiel Ergebnis
0b0011 | 0b1010
0b1011
0b1110 | 0b0000
0b1110
0b1010 | 0b0101
0b1111
0b1111 | 0b1010
0b1111

Nur wenn die entsprechenden Bits (die Bits an der gleichen Position) beider Zahlen Null sind, ist das entsprechende Bit des Ergebnisses gleich Null.



3. Bitweiser ^Operator (XOR oder „exklusives Oder“)

Der XOROperator, auch exklusiv oder^ ausgesprochen, wird durch das Symbol gekennzeichnet . Um es über die Tastatur einzugeben, drücken Sie Umschalt + 6 (auf einem englischen Tastaturlayout).

a ^ b

Dieser Operator ähnelt in gewisser Weise dem OROperator, auch weil er einen ähnlichen Namen hat:XOR

Der bitweise ^(XOR) Operator bedeutet „das resultierende Bit ist gleich eins, wenn das entsprechende Bit der Zahl agleich eins ist, ORdas entsprechende Bit der Zahl bgleich eins ist, aber nicht beide gleichzeitig“:

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

Beispiele:

Beispiel Ergebnis
0b0011 ^ 0b1010
0b1001
0b1110 ^ 0b0000
0b1110
0b1010 ^ 0b0101
0b1111
0b1111 ^ 0b1010
0b0101

Nur wenn die entsprechenden Bits (die Bits an der gleichen Position) beider Zahlen unterschiedlich sind , ist das entsprechende Bit des Ergebnisses gleich eins . Wenn die Bits gleich sind , ist das resultierende Bit gleich Null .



4. Bitweiser ~Operator (NOT, COMPLEMENT).

Ich denke, man kann schon erraten, was es bewirkt. Dieser Operator ist dem logischen !Operator (NOT) sehr ähnlich, wird jedoch durch eine Tilde und nicht durch ein Ausrufezeichen gekennzeichnet:

~a

Dies ist ein unärer Operator, das heißt, er gilt für eine einzelne Zahl, nicht für zwei. Es erscheint vor diesem einzelnen Operanden.

Der bitweise ~Operator bedeutet „das resultierende Bit ist eins, wenn das entsprechende Bit der Zahl aNull ist, und es ist Null, wenn das entsprechende Bit der Zahl aeins ist“:

~1 = 0
~0 = 1

Beispiele:

Beispiel Ergebnis
~0b0011
0b1100
~0b0000
0b1111
~0b0101
0b1010
~0b1111
0b0000

Dieser Operator ändert einfach das Bit und die Bits, die 1verwendet werden sollen .001