0Pricing
Zig Academy · Lezione

Campi di bit e flag

Impacchetti booleani e campi piccoli in modo compatto.

Campi di bit e flag è una lezione Zig Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Zig Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Zig Academy include 4 lezioni in totale.

Molti flag, un byte

Le impostazioni sono spesso semplici interruttori attivo/disattivo. Impacchettarle come campi di bit permette di memorizzare molti flag in un singolo intero di piccole dimensioni.

I booleani occupano un bit

All'interno di una packed struct, un bool occupa esattamente un bit. Mettendone insieme diversi, questi condividono un singolo byte.

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

Mescolare bool e interi piccoli

Una packed struct può combinare flag e interi di ampiezza ridotta, rappresentando un registro reale in cui ogni gruppo di bit ha un significato.

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

Leggere un flag per nome

Accede a ogni bit tramite il relativo nome del campo, così il codice rimane chiaro anche se i dati sono strettamente impacchettati.

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

Invertire un flag

Imposti o azzeri un flag assegnando un valore al campo. Non serve applicare maschere di bit manualmente: Zig gestisce per Lei i calcoli sui bit.

m.italic = true;

La vista dei bit grezzi

Le serve il numero sottostante? @bitCast trasforma la struct dei flag nel suo backing integer per memorizzarlo o confrontarlo.

const bits: u3 = @bitCast(m);

Decodificare i bit in arrivo

Sta leggendo bit da un file o da un dispositivo? Esegua il cast dell'intero grezzo nella struct per decodificarlo in flag denominati.

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

Gli enum come campi di bit

Un campo può essere un enum con un intero di supporto piccolo, offrendo scelte denominate che occupano comunque soltanto pochi bit.

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

Perché impacchettare

I campi di bit fanno risparmiare memoria e corrispondono esattamente all'hardware, un aspetto importante nel codice embedded, nei driver e nei formati di file binari.

Il layout rimane prevedibile

Poiché la struct è packed, l'ordine dei bit non cambia mai. Ciò che dichiara è ciò che vedranno l'hardware e gli altri programmi.

Codice chiaro, dati compatti

Il vantaggio principale è che può scrivere nomi di campo leggibili mantenendo i dati compatti come se avesse manipolato i bit manualmente. 🎛️

Verifica rapida

Rifletta su quanto spazio occupa un bool all'interno di una packed struct.

Riepilogo

Ha impacchettato i flag in un unico intero: i bool occupano un bit, può combinare interi piccoli ed enum, e @bitCast permette di passare dalla struct ai bit grezzi e viceversa. 🎉

Domande Frequenti

La lezione «Campi di bit e flag» è gratuita?

Sì — il testo completo di «Campi di bit e flag» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Zig Academy, passa a CoddyKit PRO. Il corso Zig Academy include 4 lezioni in totale.

Cosa imparerò in «Campi di bit e flag»?

Impacchetti booleani e campi piccoli in modo compatto. Eserciti Zig Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Zig Academy?

Non è richiesta alcuna esperienza precedente. Zig Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Campi di bit e flag»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Zig Academy?

Sì. Ogni lezione Zig Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. packed struct per un layout esatto
  2. Interi di larghezza arbitraria come u3
  3. Campi di bit e flag
  4. extern struct e layout ABI
← Torna a Zig Academy