Bitmaskenoperationen in Java

Zeeshan Afridi 12 Oktober 2023
  1. Bitmaskenoperationen in Java
  2. Bitweise Operatoren in Java
Bitmaskenoperationen in Java

Die Bitmaske ist die binäre Darstellung einiger Daten. Bei der Bitmaskierung betrachten wir alle Daten als einige Binärziffern wie 0 und 1.

Wir können diese Binärziffern auch als Boolesche Werte verwenden, da 1 für true und 0 für false steht.

Bitmaskenoperationen in Java

Eine andere Definition der Bitmaskierung ist die Visualisierung einer Zahl oder anderer Daten in binärer Darstellung. Einige Bits sind gesetzt und andere nicht gesetzt, wobei gesetzt true oder 1 bedeutet und nicht gesetzt false oder 0 bedeutet.

Nehmen wir an, wir haben einen Binärwert 10011. Hier sind das 1., 4. und 5. Bit gesetzt, während das 2. und 3. ungesetzt sind.

Lassen Sie uns die Bitmaske anhand eines Beispiels verstehen. Angenommen, wir haben einen Satz von vier Zeichen {w,x,y,z}, und wir wollen eine andere Darstellung der Zeichenfolge.

Um eine Maske der 4 Bits {_ _ _ _} zu erstellen, gibt uns jedes Bit die Information, ob wir uns auf dieses Zeichen beziehen oder nicht. Zur Vereinfachung bedeutet die binäre Kombination 1001 w,z, 0000 bedeutet eine leere Zeichenkette und 1111 bedeutet w, x, y, z.

Nachdem wir nun Bits und Bitmaskierung verstanden haben, ist es an der Zeit, etwas über bitweise Operatoren zu lernen, die zum Manipulieren von Bits verwendet werden.

Bitweise Operatoren in Java

Bitweise Java-Operatoren werden verwendet, um die Manipulation von Bits durchzuführen. Diese Operatoren können in jedem ganzzahligen Typ wie short, byte, long, char, int usw. verwendet werden.

Wir haben verschiedene bitweise Operatoren. Jeder von ihnen wird für einen anderen Zweck verwendet.

Dies sind die folgenden:

  1. Bitweises UND (&)
  2. Bitweises ODER (|)
  3. Bitweises Komplement (~)
  4. Bitweises XOR (^)

Bitweiser UND-Operator (&) in Java

Der UND-Operator ist ein bitweiser Operator, der mit & gekennzeichnet ist. Es berechnet bitweise zwei oder mehr Werte und gibt true zurück, wenn beide Werte true sind; andernfalls false.

 1(True) & 1(True)  = 1(True)
0(False) & 0(False) = 0(False)
 1(True) & 0(False) = 0(False)
0(False) & 1(True)  = 0(False)

Beispielcode:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    int a = 3;
    int b = 4;

    // bitwise AND
    // 0011 & 0100=0000 = 0
    System.out.println("a & b = " + (a & b));
  }
}

Ausgabe:

a & b = 0

Bitweiser ODER-Operator (|) in Java

Der OR-Operator ist ebenfalls ein bitweiser Operator, der mit | bezeichnet wird, unterscheidet sich jedoch vom AND-Operator (&). Es gibt true zurück, wenn und nur wenn ein einzelner Wert true ist; andernfalls false.

 1(True) | 1(True)  = 1(True)
0(False) | 0(False) = 0(False)
 1(True) | 0(False) = 1(True)
0(False) | 1(True)  = 1(True)

Beispielcode:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    int a = 3;
    int b = 4;

    // bitwise OR
    // 0011 & 0100=0000 = 7
    System.out.println("a | b = " + (a | b));
  }
}

Ausgabe:

a & b = 7

Bitweiser Komplementoperator (~) in Java

Der bitweise Komplementoperator (~), auch bekannt als NOT-Operator, kann ein Bitmuster invertieren. Es ist ein unärer Operator, da er mit einem einzigen Wert verwendet wird.

Angenommen, wir haben eine Binärzahl, 10110, und wir wollen diese mit dem bitweisen Komplementoperator (~) negieren. Es wird 01001.

Es hat 0s in 1s und 1s in 0s invertiert.

 ~ 1(True) = 0(False)
~ 0(False) = 1(True)

Beispielcode:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    // Initial values
    int a = 3, b;

    // bitwise complement of a
    // a = 011 where b = ~a, b =100
    b = ~a;
    System.out.println("~a = " + b);
  }
}

Ausgabe:

~a = -4

Bitweiser XOR-Operator (^) in Java

Der bitweise XOR-Operator von Java ist ein binärer Operator, der mit ^ bezeichnet wird.

Es gibt true zurück, wenn die eingegebenen Binärwerte beide unterschiedlich sind. Wenn jedoch die Eingabewerte gleich sind, entweder 0 oder 1, ist das Ergebnis false.

 1(True) ^ 1(True)  = 0(False)
0(False) ^ 0(False) = 0(False)
 1(True) ^ 0(False) = 1(True)
0(False) ^ 1(True)  = 1(True)

Beispielcode:

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    // Initial values
    int a = 3;
    int b = 4;

    // bitwise xor
    // 0011 ^ 0100 = 0111 = 7
    System.out.println("a ^ b = " + (a ^ b));
  }
}

Ausgabe:

a ^ b = 7
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn