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.

Tipps zur 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.

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.
ツールくん

Ü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.