Zeit/Zahlen
Bitweise Operationen
AND/OR/XOR/NAND/NOR/XNOR/NOT und Shifts auf Ganzzahlen einer festgelegten Breite (8/16/32/64 Bit) in jedem Zahlensystem.
(Anzahl der zu verschiebenden Bits, Dezimalzahl)
Bitwise operations work directly on a number's individual bits rather than its value as a whole — the basis for permission flags, network protocols, and low-level optimization.
How to use it
- Enter one or two numbers in any base (binary, hex, decimal) and pick an operation (AND, OR, XOR, NAND, NOR, XNOR, NOT, or a shift).
- Pick a bit width (8/16/32/64 bits) — it affects how NOT and shifts behave at the number's boundaries.
- The result is shown instantly in several number bases for easy comparison.
Common uses
- Working with permission or setting flags packed into a single number (file system access rights, for example).
- Debugging a network protocol or binary format where fields are packed at the individual-bit level.
- A teaching example for understanding binary number representation and operations on it.
Things to keep in mind
The result of NOT and shifts depends on the chosen bit width — the same number gives a different result at 8-bit versus 32-bit width because of the different number of bits involved.
XOR is often used to toggle a flag — applying XOR twice with the same value returns the original.
Artikel zu diesem Tool: Bitweise Operationen: wie AND, OR und XOR auf Bit-Ebene funktionieren
Häufig gestellte Fragen
Was ist der Unterschied zwischen AND, OR, XOR, NAND, NOR, XNOR und NOT?
AND ergibt 1 nur, wenn beide Bits 1 sind, OR ergibt 1, wenn mindestens eines 1 ist, und XOR ergibt 1, wenn die Bits unterschiedlich sind. NAND/NOR/XNOR sind ihre Verneinungen, und NOT invertiert jedes Bit eines einzelnen Operanden.
Wie werden Bitbreite und Vorzeichen einer Zahl gehandhabt?
Wählen Sie eine Breite von 8/16/32/64 Bit — Operationen und Verschiebungen erfolgen innerhalb dieses Bereichs. Negative Zahlen werden im Zweierkomplement dargestellt, sodass das Ergebnis von NOT oder einer Verschiebung unerwartet aussehen kann, wenn Sie an Dezimalnotation gewöhnt sind.
Was ist der Unterschied zwischen einer Linksverschiebung und einer Rechtsverschiebung?
Eine Linksverschiebung (<<) fügt rechts Nullen hinzu und multipliziert effektiv mit 2 hoch dem Verschiebungsbetrag. Eine Rechtsverschiebung kann logisch sein (fügt links Nullen hinzu) oder arithmetisch (bewahrt das Vorzeichenbit) — der Typ hängt vom gewählten Modus ab.
Warum funktioniert ein Ausdruck wie "if (a & b == c)" oft nicht wie erwartet?
In den meisten Sprachen hat der Vergleichsoperator == eine höhere Priorität als der bitweise Operator &, sodass der Ausdruck als "a & (b == c)" ausgewertet wird und nicht wie üblicherweise beabsichtigt. Setzen Sie bitweise Operationen daher immer explizit in Klammern, um diese Falle zu vermeiden.
Warum bitweise Flags statt einzelner boolescher Variablen verwenden?
Ein Satz von Flags in einer einzigen Zahl lässt sich kompakter speichern und übertragen (z. B. in Netzwerkprotokollen oder Dateiformaten), und das Prüfen oder Ändern eines bestimmten Flags mit AND/OR/XOR ist eine einzige schnelle Operation.