informatiker.lernen(fia);

Lernen macht hungrig oder? Dann koch dir doch was!


Werbung* - Unterstütze die Seite gerne durch einen Kauf bei Hello Fresh!

informatiker.lernen(fia);

Letzte Änderung: 04-05-2026

Bitweise Operatoren in Java/Processing

In diesem Kurs führe ich dich in kleinen Schritten in die Grundlagen der Programmierung ein. Wir nutzen dazu die Anfängerfreundliche Hochsprache "Processing" (ein Java Dialekt).

In diesem Teil geht es um bitweise Operatoren.

Einfügen

Was sind bitweise Operatoren?

Bitweise Operatoren arbeiten direkt auf den einzelnen Bits von Ganzzahlen. Statt mit ganzen Zahlenwerten auf arithmetischer Ebene zu rechnen, vergleichen und verändern sie jeweils die einzelnen Bits der Operanden.

In Java können bitweise Operatoren nur auf numerische Operanden angewendet werden. Als mögliche Operanden kommen alle numerischen Datentypen in Frage.

Bitweise Operatoren sind sehr schnell und werden häufig für niedrige Ebenen der Programmierung, effiziente Flags/Masken, Embedded- und Systemprogrammierung sowie Performance-Optimierungen verwendet.

Es gibt folgende bitweise Operatoren:

Operator Wirkung
AND (&) Ergebnisbit ist 1, wenn alle Eingangsbits 1 sind
OR (I) Ergebnisbit ist 1, wenn mindestens ein Eingangsbit 1 ist
XOR(^) Ergebnisbit ist 1, wenn genau eines der Eingangsbits 1 ist
NOT(~)
Alle Bits werden invertiert (0→1, 1→0).
Linksshift(<<) Bits werden nach links verschoben; rechts werden Nullen eingefügt
Arithmetischer
Rechtsshift(>>)
Verschiebt die Bits nach rechts und füllt die entstehenden Positionen von links mit dem Wert des
ursprünglichen Vorzeichenbits auf (bei positiven Zahlen mit 0, bei negativen mit 1)
Logischer
Rechtsshift(>>>)
Verschiebt die Bits nach rechts und setzt das Vorzeichenbit auf 0

Wozu zwei Operatoren für Rechtsverschiebung?

In Java sind alle numerischen Datentypen Vorzeichenbehaftet, ihr höchstwertiges Bit gibt an ob die Zahl positiv oder negativ ist. Ist das höchstwertige Bit gesetzt (= 1), ist die Zahl negativ. Der zusätzliche Rechtsschiebe-Operator >>> setzt nach dem Verschieben der Bits das höchstwertige Bit immer auf 0. Somit ist die resultierende Zahl stets positiv. Aber Vorsicht, dies funktioniert nur für int-Datentypen reibungslos.

Einfügen

Beispiele: AND (&), OR(|),  XOR(^) und NOT(~)

& = Ergebnisbit ist 1, wenn Eingangsbits 1 sind| = Ergebnisbit ist 1, wenn mindestens ein Eingangsbits 1 istXOR(^) = Ergebnisbit ist 1, wenn genau eines der Eingangsbits 1 istNOT(~) = Alle Bits werden invertiert (0→1, 1→0)

Durch die bitweise Negation werden alle Bits invertiert. Weil Java Ganzzahlen als Zweierkomplement speichert, ergibt das erste Beispiel der Negation von 8 die negative Zahl -9 und das zweite Beispiel, mit der negativen Zahl -8 nach der Negation die positive Zahl 7.

Einfügen

Beispiele: Schiebeoperatoren ( <<, >>, >>> )

Die Verschiebung wird immer mit int-Werten durchgeführt. Dadurch werden zwar bei dem logischen Rechtsschiebe-Operator Nullen vorne angefügt, aber eben ganz links am 32ten Bit. Durch eine Typumwandlung von int zu byte werden nur die letzten 8 Bit behalten.

Verschiebeoperatoren werden eingesetzt um schelle Rechenoperationen durchzuführen. Bitverschiebungen sind in Regel schneller als Arithmetische Operationen.

Linksschieben <<

Es werden die Bits von a um b Positionen nach links geschoben. Auch das höchstwertige Bit wird nach links geschoben und erfährt keine besondere Behandlung. Dies entspricht mathematisch einer Multiplikation des Wertes mit 2 hoch n (n ist Anzahl der verschobenen Stellen)

Rechtsschieben >> (arithmetisches Rechtsverschieben)

Es werden die Bits von a um b Positionen nach rechts geschoben. Dies entspricht mathematisch einer Division des Wertes mit 2 hoch n (n ist Anzahl der verschobenen Stellen). Das höchstwertige Bit wird nach dem Schieben gesetzt, falls es auch vor dem Schieben gesetzt war. Somit bleibt eine negative Zahl auch nach dem Rechtsschieben negativ.

Rechtsschieben >>> (ohne Vorzeichen, logisches Rechtsschieben)

Es werden die Bits von a um b Positionen nach rechts geschoben. Das höchstwertige Bit wird nach dem Schieben immer auf 0 gesetzt. Die Verschiebung wird immer mit int-Werten durchgeführt. Dadurch werden zwar bei dem logischen Rechtsschiebe-Operator Nullen vorne angefügt, aber eben ganz links am 32ten Bit. Durch eine Typumwandlung von int zu byte werden nur die letzten 8 Bit behalten.

Ganzzahlen in Binärschreibweise

In den obigen Beispielen wurden die Ganzzahlen immer als Dezimalzahl initialisiert. Es ist auch möglich Wert als Dualzahl anzugeben. Hier ein Beispiel, in dem Linksverschoben wird.

Einfügen

Werbung (Affiliate - ich bekomme eine kleine Provision, dein Preis ändert sich nicht)

Alfahosting - WordPress-Hosting


Lernen macht hungrig oder? Dann koch dir doch was!


Werbung* - Unterstütze die Seite gerne durch einen Kauf bei Hello Fresh!

Dein Feedback ist uns wichtig

Hat dir dieser Inhalt gefallen? Hast Du Kritik oder Verbesserungsvorschläge? Hast Du inhaltliche Fehler entdeckt?

Schreib uns gerne dein Anliegen an info@informatiker-lernen.de