0Pricing
Zig Academy · Lektion

Bitfelder und Flags

Packen Sie boolesche Werte und kleine Felder platzsparend.

Bitfelder und Flags ist eine kostenlose Zig Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Zig Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Viele Flags, ein Byte

Einstellungen sind oft lediglich Ein-/Aus-Schalter. Wenn Sie sie als Bitfelder packen, können viele Flags in einer einzigen kleinen Ganzzahl gespeichert werden.

Boolesche Werte belegen ein Bit

Innerhalb einer packed struct belegt ein bool genau ein Bit. Mehrere davon können zusammen in einem einzigen Byte gespeichert werden.

const Mode = packed struct {
    bold: bool,
    italic: bool,
    underline: bool,
};

Bools und kleine Ganzzahlen kombinieren

Eine packed struct kann Flags mit Ganzzahlen geringer Breite kombinieren und so ein echtes Register modellieren, in dem jede Bitgruppe eine Bedeutung hat.

const Reg = packed struct {
    enabled: bool,
    speed: u3,
    mode: u2,
};

Ein Flag per Namen lesen

Sie greifen über den Feldnamen auf jedes Bit zu. Dadurch bleibt der Code verständlich, obwohl die Daten eng gepackt sind.

var m = Mode{ .bold = true, .italic = false, .underline = false };
if (m.bold) {}

Ein Flag umschalten

Setzen oder löschen Sie ein Flag, indem Sie dem Feld einen Wert zuweisen. Sie müssen keine Bitmasken von Hand erstellen – Zig übernimmt die Bitberechnung für Sie.

m.italic = true;

Die Ansicht der rohen Bits

Sie benötigen die zugrunde liegende Zahl? @bitCast wandelt die Flag-Struct für Speicherung oder Vergleiche in ihre zugrunde liegende Ganzzahl um.

const bits: u3 = @bitCast(m);

Eingehende Bits dekodieren

Sie lesen Bits aus einer Datei oder von einem Gerät? Wandeln Sie die rohe Ganzzahl zurück in Ihre Struct, um sie in benannte Flags zu dekodieren.

const incoming: u3 = 0b101;
const m: Mode = @bitCast(incoming);

Enums als Bitfelder

Ein Feld kann ein enum mit einer kleinen zugrunde liegenden Ganzzahl sein. So erhalten Sie benannte Auswahlmöglichkeiten, die trotzdem in wenigen Bits Platz finden.

const Speed = enum(u2) { slow, medium, fast };

Warum überhaupt packen

Bitfelder sparen Speicher und entsprechen der Hardware exakt. Das ist bei Embedded-Code, Treibern und binären Dateiformaten wichtig.

Das Layout bleibt vorhersehbar

Da die Struct gepackt ist, ändert sich die Bitreihenfolge nie. Was Sie deklarieren, sehen auch die Hardware und andere Programme.

Lesbarer Code, kompakte Daten

Der entscheidende Vorteil: Sie schreiben lesbare Feldnamen, während die Daten so kompakt bleiben wie bei manueller Bitmanipulation. 🎛️

Kurzer Test

Überlegen Sie, wie viel Speicher ein bool innerhalb einer packed struct benötigt.

Zusammenfassung

Sie haben Flags in eine Ganzzahl gepackt: Bools belegen ein Bit, schmale Ganzzahlen und Enums lassen sich kombinieren, und @bitCast wandelt zwischen Struct und rohen Bits um. 🎉

Häufig gestellte Fragen

Ist die Lektion „Bitfelder und Flags“ kostenlos?

Ja — der vollständige Text von „Bitfelder und Flags“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Zig Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Bitfelder und Flags“?

Packen Sie boolesche Werte und kleine Felder platzsparend. Du übst Zig Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Zig Academy zu starten?

Keine Vorkenntnisse erforderlich. Zig Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Bitfelder und Flags“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Zig Academy-Lektion Code schreiben und ausführen?

Ja. Jede Zig Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. packed struct für exaktes Layout
  2. Ganzzahlen beliebiger Breite wie u3
  3. Bitfelder und Flags
  4. extern struct und ABI-Layout
← Zurück zu Zig Academy