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)
Bitweise Operationen arbeiten direkt mit den einzelnen Bits einer Zahl statt mit ihrem Gesamtwert — die Grundlage für Berechtigungs-Flags, Netzwerkprotokolle und Low-Level-Optimierung.
So verwendest du es
- Gib eine oder zwei Zahlen in einer beliebigen Basis ein (binär, hex, dezimal) und wähle eine Operation (AND, OR, XOR, NAND, NOR, XNOR, NOT oder eine Verschiebung).
- Wähle eine Bitbreite (8/16/32/64 Bit) — sie beeinflusst, wie sich NOT und Verschiebungen an den Grenzen der Zahl verhalten.
- Das Ergebnis wird sofort in mehreren Zahlensystemen zum einfachen Vergleich angezeigt.
Typische Anwendungsfälle
- Mit Berechtigungs- oder Einstellungs-Flags arbeiten, die in einer einzigen Zahl gepackt sind (etwa Dateisystem-Zugriffsrechte).
- Ein Netzwerkprotokoll oder Binärformat debuggen, dessen Felder auf Bit-Ebene gepackt sind.
- Ein Lehrbeispiel zum Verständnis der binären Zahlendarstellung und ihrer Operationen.
Was du wissen solltest
Das Ergebnis von NOT und Verschiebungen hängt von der gewählten Bitbreite ab — dieselbe Zahl liefert bei 8-Bit- und 32-Bit-Breite unterschiedliche Ergebnisse wegen der unterschiedlichen Bitanzahl.
XOR wird oft genutzt, um ein Flag umzuschalten (Toggle) — zweimaliges Anwenden von XOR mit demselben Wert liefert das Original zurück.
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.