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.

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

Common uses

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.

Artikel: Zeit/Zahlen

Unix-Zeit: warum Computer die Zeit ab 1970 zählen

Warum der 1. Januar 1970 zum Bezugspunkt der Zeit für die meisten Computersysteme wurde.

Cron-Ausdrücke: wie man einen Aufgabenzeitplan entschlüsselt

Wie man einen Ausdruck wie */15 * * * * entschlüsselt und genau weiß, wann die Aufgabe ausgeführt wird.

Zahlensysteme: wozu Binär-, Oktal- und Hexadezimalsystem gebraucht werden

Warum die Farbe #FF5733 in CSS mit hexadezimalen statt dezimalen Ziffern geschrieben wird.

Datumsdifferenz: warum das Zählen von Tagen komplizierter ist, als es scheint

Warum eine naive Subtraktion von Daten wegen Schaltjahren ein falsches Ergebnis liefern kann.

Altersberechnung: warum es nicht einfach eine Subtraktion von Jahren ist

Warum das einfache Subtrahieren der Geburtsjahre ein um eins zu hohes Alter ergeben kann.

Zeitzonen: warum UTC nicht dasselbe ist wie GMT

Warum sich UTC nie zweimal im Jahr ändert, die Londoner Zeit (GMT/BST) aber schon.

Dauerrechner: wie man Stunden, Minuten und Sekunden korrekt addiert

Warum beim Addieren von Minuten und Sekunden der Rest wie bei der Dezimaladdition in die nächste Stelle übertragen werden muss.

ISO 8601 Duration: wie man eine Dauer im Standardformat schreibt

Warum PT1H30M „1 Stunde 30 Minuten" bedeutet, nicht „1 Minute 30 Stunden".

Kalenderwoche: warum verschiedene Länder Wochen unterschiedlich zählen

Warum der 1. Januar nach ISO 8601 manchmal zur Woche 52 oder 53 des Vorjahres gehört.

Römische Zahlen: wie ein System ohne Null und Stellenwert funktioniert

Warum IV für 4 steht und nicht für 6, und wie die Subtraktionsregel bei römischen Zahlen funktioniert.

IEEE 754: warum 0.1 + 0.2 im Code nicht gleich 0.3 ist

Warum fast jede Programmiersprache für 0.1 + 0.2 den Wert 0.30000000000000004 ausgibt.

Zahl in Worten: wozu Ziffern in Text umwandeln

Warum Bankdokumente einen Betrag sowohl in Ziffern als auch in Worten schreiben.