Bitweiser-Operationen-Simulator (AND, OR, XOR, NOT, Shift)

Berechnet AND, OR, XOR, NOT, Links- und Rechtsshift für zwei Zahlen und zeigt in einem Bitraster genau an, welche Bits sich geändert haben. Unterstützt 8/16/32-Bit-Breiten.

Was sind bitweise Operationen?

Bitweise Operationen betrachten Zahlen nicht als Ganzes, sondern als Folge einzelner Bits (0 und 1) und verknüpfen diese Ziffer für Ziffer nach logischen Regeln. AND, OR, XOR, NOT sowie die Shift-Operationen (Links- und Rechtsshift) sind die fünf grundlegenden Vertreter. Alle fünf zählen zu den einfachsten CPU-Befehlen und werden direkt von der Hardware ausgeführt – dadurch sind sie deutlich schneller als klassische arithmetische Operationen wie Multiplikation oder Division. In Programmiersprachen werden sie meist mit den Symbolen `&`, `|`, `^`, `~`, `<<` und `>>` notiert und kommen unter anderem bei der Verwaltung von Flags, bei Berechtigungssystemen, in der Kryptografie und bei der Bildverarbeitung zum Einsatz.

Mit diesem Tool geben Sie Wert A und Wert B ein (bei NOT wird ausschließlich Wert A verwendet) und wählen zusätzlich eine Bitbreite (8, 16 oder 32 Bit). Das Ergebnis wird anschließend Bit für Bit in einem übersichtlichen Raster visualisiert. Die Eingabe ist sowohl in dezimaler Schreibweise als auch mit den Präfixen `0x` (hexadezimal) und `0b` (binär) möglich – also genau in der Notation, wie sie auch im eigenen Quellcode verwendet wird. Werte, die die gewählte Bitbreite überschreiten, lassen sich innerhalb dieser Breite nicht mehr korrekt darstellen. Legen Sie die Bitbreite deshalb vorab bewusst fest, um die angezeigten Ergebnisse richtig einordnen zu können.

So verwenden Sie den Bitweise-Operationen-Simulator

  1. Bitbreite wählen Legen Sie zunächst fest, ob mit 8, 16 oder 32 Bit gerechnet werden soll. Wer unsicher ist, beginnt am besten mit 8 Bit, da sich Veränderungen im Bitraster hier am leichtesten nachvollziehen lassen.
  2. Operation auswählen Wählen Sie AND, OR, XOR, NOT, Linksshift oder Rechtsshift aus. Bei NOT wechselt die Eingabemaske automatisch auf ein einzelnes Feld, da hier nur ein Wert benötigt wird.
  3. Werte eingeben Geben Sie Wert A (und bei allen Operationen außer NOT zusätzlich Wert B) in dezimaler, hexadezimaler (`0x`) oder binärer (`0b`) Schreibweise ein. Bei den Shift-Operationen legen Sie zusätzlich die Anzahl der zu verschiebenden Bits fest.
  4. Ergebnisraster prüfen Das Ergebnis wird automatisch berechnet und Bit für Bit angezeigt. Gelb markierte Bits zeigen an, an welchen Positionen sich der Wert gegenüber A verändert hat.
  5. Dezimal- und Hexadezimaldarstellung vergleichen Unterhalb der Ergebniszeile finden Sie den Wert zusätzlich als Dezimal- und Hexadezimalzahl, sodass Sie das Bitmuster direkt mit der in Ihrem Code verwendeten Schreibweise abgleichen können.

Tipps für die Nutzung

  • Werte können dezimal eingegeben werden, oder mit dem Präfix `0x1A` (hexadezimal) bzw. `0b1010` (binär). So lassen sich Werte direkt aus dem eigenen Code übernehmen.
  • AND, OR und XOR verwenden zwei Werte, NOT dagegen nur einen. Die Anzahl der Eingabefelder passt sich automatisch an die gewählte Operation an.
  • Der Rechtsshift (`>>>`) unterstützt hier nur die logische Variante. Im FAQ wird erklärt, worin der Unterschied zu einem arithmetischen Shift besteht, der das Vorzeichenbit erhält.
  • Wechselt man die Bitbreite von 8 auf 16 und 32, sieht man, wie dieselbe Zahl weitere führende Nullen erhält – ein guter Weg, um zu verstehen, was „Bitbreite" wirklich bedeutet.
  • Gelb markierte Bits sind jene, die sich zwischen A und dem Ergebnis geändert haben. Bei AND/OR lässt sich so visuell nachvollziehen, welcher Eingabewert an welcher Bitposition „gewonnen" hat.

Anwendungsfälle für bitweise Operationen

Programmieren lernen

Beim Erlernen von Sprachen wie C, Java oder Python lassen sich die Operatoren `&`, `|`, `^`, `~`, `<<` und `>>` hier visuell nachvollziehen. Besonders NOT und Shift-Operationen sind im Kopf schwer zu berechnen – das Bitraster macht das Ergebnis sofort verständlich.

Bit-Flags und Berechtigungssysteme entwerfen

Ob klassische Unix-Dateiberechtigungen oder das Bündeln mehrerer Ein/Aus-Zustände in einer einzigen Ganzzahl: Testen Sie hier vorab, wie eine AND-Maskierung einzelne Flags ausliest oder eine OR-Verknüpfung neue Flags setzt.

Wettbewerbsprogrammierung und Bitmasken-Algorithmen

Bitmasken-DP und die Darstellung von Mengen als Ganzzahl gehören zu den Standardtechniken im kompetitiven Programmieren. Prüfen Sie Zwischenschritte anhand kleiner Beispielwerte, bevor Sie die Logik in Code umsetzen.

Hexadezimal- und Binärwerte im Zusammenspiel mit Operationen prüfen

Kombinieren Sie dieses Tool mit einem Zahlensystem-Konverter, um sowohl die reine Umrechnung zwischen Dezimal-, Hexadezimal- und Binärwerten als auch deren Verhalten bei bitweisen Operationen im Blick zu behalten.

Farbcodes und Netzwerkadressen berechnen

Das Extrahieren der Rot-, Grün- und Blauanteile aus einem Hex-Farbcode oder die Verknüpfung einer IP-Adresse mit einer Subnetzmaske per AND lassen sich hier Schritt für Schritt nachvollziehen.

Glossar der Fachbegriffe

AND
Liefert an einer Bitposition nur dann eine 1, wenn beide Eingabebits 1 sind. Wird typischerweise zur Maskierung eingesetzt, also um bestimmte Bits aus einem Wert herauszufiltern.
OR
Liefert an einer Bitposition bereits dann eine 1, wenn mindestens eines der beiden Eingabebits 1 ist. Wird verwendet, um bestimmte Bits gezielt zu setzen.
XOR
Liefert an einer Bitposition nur dann eine 1, wenn sich die beiden Eingabebits unterscheiden. Häufig genutzt, um einzelne Bits umzuschalten, Werte ohne Hilfsvariable zu vertauschen oder Unterschiede zwischen zwei Werten zu erkennen.
NOT
Kehrt sämtliche Bits eines einzelnen Werts um (aus 0 wird 1, aus 1 wird 0). Das Ergebnis hängt direkt von der gewählten Bitbreite ab, da sich die Anzahl der invertierten Bits entsprechend ändert.
Shift-Operation
Verschiebt das gesamte Bitmuster eines Werts um eine festgelegte Anzahl Positionen nach links oder rechts. Ein Linksshift entspricht einer Multiplikation mit einer Zweierpotenz, ein Rechtsshift einer entsprechenden Division.
Bitmaske
Ein Wert, der zusammen mit AND oder OR verwendet wird, um gezielt bestimmte Bits eines anderen Werts auszulesen oder zu verändern. `0b00001111` extrahiert beispielsweise per AND nur die untersten 4 Bits.
Bitbreite
Die Anzahl der Bits, mit denen ein Wert dargestellt wird. Bei 8 Bit reicht der darstellbare Bereich von 0 bis 255, bei 16 Bit von 0 bis 65535.
Binär- und Hexadezimalschreibweise
Die Binärschreibweise verwendet ausschließlich die Ziffern 0 und 1, die Hexadezimalschreibweise die Ziffern 0–9 sowie die Buchstaben A–F. Hexadezimalzahlen dienen oft als kompakte Kurzschreibweise für Gruppen von Binärstellen.

Häufig gestellte Fragen

Ja. Der logische Shift (`>>>`) füllt die frei werdenden oberen Bits stets mit 0, während der arithmetische Shift (`>>`) stattdessen das Vorzeichenbit (das höchstwertige Bit) hineinkopiert. Da dieses Tool Werte als nicht negative Ganzzahlen innerhalb der gewählten Bitbreite behandelt, spielt das Vorzeichen hier keine zentrale Rolle, weshalb nur der leichter verständliche logische Shift angeboten wird.

Die bitweisen Operatoren von JavaScript rechnen intern mit 32-Bit-Ganzzahlen mit Vorzeichen. Wendet man NOT auf ein 8-Bit-`00000001` (1) an, ergibt sich daher normalerweise `-2`. Dieses Tool maskiert das Ergebnis erneut auf die gewählte Bitbreite (8/16/32), sodass bei 8 Bit korrekt `11111110` (254) angezeigt wird – die richtige Darstellung innerhalb dieser Breite.

AND liefert nur dann 1, wenn beide Bits 1 sind, und wird daher häufig verwendet, um bestimmte Bits herauszufiltern (Maskierung). OR liefert 1, sobald eines der Bits 1 ist, und wird genutzt, um bestimmte Bits zu setzen. XOR liefert nur dann 1, wenn sich die Bits unterscheiden, und wird verwendet, um Bits umzuschalten oder zwei Werte zu vertauschen.

Ein Linksshift (`<<`) ist eine schnelle Methode, um mit Zweierpotenzen zu multiplizieren (verdoppeln, vervierfachen usw.), während ein Rechtsshift (hier logisch) häufig zum Teilen durch 2 oder zum Extrahieren eines bestimmten Bitbereichs verwendet wird. Beide kommen in kompetitivem Programmieren und bitmaskenbasierten Algorithmen ständig vor.

Nicht ganz – die Begriffe hängen zusammen, sind aber unterschiedlich. Bitweise Operationen bezeichnen die Operationen selbst (AND, OR, XOR, NOT, Shifts), während eine Bitmaske ein Wert ist, der zusammen mit einer dieser Operationen (meist AND oder OR) verwendet wird, um bestimmte Bits zu lesen oder zu ändern. `value & 0b00001111` ist zum Beispiel eine klassische Bitmaske, die nur die untersten 4 Bits extrahiert.
Tool-kun

Übrigens – Die kuriosen Eigenschaften von XOR

Bitweise Operationen entsprechen direkt den Logikschaltungen eines Computers und gehören damit zu den schnellsten Operationen, die eine CPU ausführen kann – oft in nur einem Taktzyklus. Da sie viel einfachere Schaltungen benötigen als arithmetische Operationen wie Multiplikation oder Division, werden in leistungskritischem Code (Bildverarbeitung, Kryptografie, Implementierung von Netzwerkprotokollen) seit Langem bitweise Tricks als Ersatz für aufwendigere Arithmetik verwendet.

XOR (Exklusiv-Oder) besitzt einige interessante Eigenschaften: Verknüpft man einen Wert per XOR mit sich selbst, ergibt sich immer 0 (`a ^ a = 0`), und XOR mit 0 liefert den ursprünglichen Wert unverändert zurück (`a ^ 0 = a`). Aus diesen beiden Tatsachen entsteht der klassische „XOR-Tausch"-Trick, mit dem sich zwei Variablen ohne Hilfsvariable vertauschen lassen (`a ^= b; b ^= a; a ^= b;`). Aus Gründen der Lesbarkeit wird er in produktivem Code heute kaum noch empfohlen, bleibt aber ein beliebtes Lehrbeispiel, um bitweise Operationen zu verstehen.

Bitmasken kommen in realen Systemen ständig zum Einsatz. Unix-Dateiberechtigungen (Lesen=4, Schreiben=2, Ausführen=1) sind buchstäblich bitweises OR und AND in Aktion, und das Extrahieren der Rot-, Grün- und Blauanteile aus einem Farbcode wie `#FF0000` erfolgt über einen Rechtsshift kombiniert mit einer AND-Maske. Die Technik, mehrere Ein/Aus-Zustände in einer einzigen Ganzzahl zu bündeln – oft „Bit-Flags" genannt – war in älteren Spielen und Systemen weit verbreitet, die mit sehr wenig Speicher viele Zustände verwalten mussten.