bitlvl
DE

Bitmasken-Rechner

Geben Sie Bitpositionen ein, um eine Maske zu bauen, oder fügen Sie eine Maske ein, um ihre Bits zu sehen. Klicken Sie Bits im Register an, um sie zu ändern. Benennen Sie die Bits, und das Tool schreibt die Konstanten für Sie.

Breite

Benannte Flags

Geben Sie den gesetzten Bits Namen und erhalten Sie Konstanten in Ihrer Sprache. Lassen Sie einen Namen leer, um das Bit zu überspringen.

  

Die Ergebnisse und Meldungen dieses Tools werden auf Englisch angezeigt.

Was eine Bitmaske ist

Eine Bitmaske ist eine Zahl, die wegen ihres Bitmusters und nicht wegen ihres Werts verwendet wird. Jede Bitposition steht für eine Ein/Aus-Option, sodass eine einzige Ganzzahl 8, 32 oder 64 Flags gleichzeitig halten kann. Berechtigungen (rwx), Datei-Öffnungsmodi, CPU-Feature-Bits, Netzmasken und Optionsmengen in fast jeder C-API sind Bitmasken.

Bit n hat den Wert 2ⁿ, eine Maske mit den gesetzten Bits 0, 2 und 7 ist also 1 + 4 + 128 = 133 = 0x85 = 1000 0101. Die Konstante im Code entsteht, indem man eine 1 an die Position schiebt: 1 << 7.

Eine Maske verwenden

ZielSo geht es
Prüfen, ob ein Flag gesetzt ist(value & FLAG) != 0
Prüfen, ob alle von mehreren Flags gesetzt sind(value & MASK) == MASK
Ein Flag setzenvalue |= FLAG
Ein Flag löschenvalue &= ~FLAG
Ein Flag umschaltenvalue ^= FLAG
Ein Feld aus den Bits 4–7 extrahieren(value >> 4) & 0xF
Eine Maske für die Bits lo..hi bauen((1 << (hi - lo + 1)) - 1) << lo

Eine vorgegebene Maske lesen

Den Wert in Binär umrechnen und die Bits von rechts ab 0 nummerieren. Jede 1 ist ein gesetztes Flag. Das Tool oben tut das für jeden eingefügten Wert und zeigt die Positionen als kompakte Liste wie 0-2, 5, 7.

Beispiele

Unix-Berechtigungen 0755
Bits 0, 2, 3, 5, 6, 7, 8 → 1 1110 1101
Subnetzmaske /20
obere 20 von 32 Bit gesetzt → 0xFFFFF000
Unteres Nibble
Bits 0-3 → 0x0F

Fragen

Warum beginnen Bitpositionen bei 0?

Weil Bit n den Wert 2ⁿ hat und 2⁰ = 1 das rechteste Bit ist. Die Zählung ab 0 lässt die Arithmetik aufgehen: Schieben um n setzt eine 1 an Bit n.

Was ist der Unterschied zwischen Bitmaske und Bitfeld?

Eine Bitmaske ist die Zahl, mit der man AND oder OR verknüpft. Ein Bitfeld ist eine Gruppe benachbarter Bits in einem größeren Wert, die zusammen eine kleine Zahl speichern (etwa die Bits 4–7 mit einem Wert 0–15). Zum Lesen oder Schreiben eines Bitfelds verwendet man eine Maske und einen Shift.

Wie viele Flags passen in eine Ganzzahl?

Eines pro Bit: 8 in einem Byte, 32 in einem 32-Bit-Int, 64 in einem 64-Bit-Int. Wer mehr braucht, nimmt ein Array von Ganzzahlen oder einen eigenen Bitset-Typ.

Warum 1 << n statt der Zahl selbst?

Es dokumentiert, welches Bit gemeint ist, und kann nicht als andere Zweierpotenz vertippt werden. Compiler falten es zu einer Konstante, es kostet also nichts zur Laufzeit.

Behandelt das Tool 64-Bit-Masken korrekt?

Ja. Es rechnet mit Ganzzahlen beliebiger Genauigkeit, alle 64 Bit sind also exakt, einschließlich Bit 63.