Campos de bits e sinalizadores
Empacote valores booleanos e campos pequenos de forma compacta.
Campos de bits e sinalizadores é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
Muitos Sinalizadores, Um Byte
Configurações geralmente são apenas interruptores ligados ou desligados. Armazená-las como campos de bits guarda vários sinalizadores em um único inteiro pequeno.
Booleanos Usam Um Bit
Dentro de uma packed struct, um bool ocupa exatamente um bit. Agrupe vários e eles compartilharão um único byte.
const Mode = packed struct {
bold: bool,
italic: bool,
underline: bool,
};Combinar Booleanos e Inteiros Pequenos
Uma packed struct pode combinar flags com inteiros estreitos, representando um registrador real em que cada grupo de bits tem um significado.
const Reg = packed struct {
enabled: bool,
speed: u3,
mode: u2,
};Ler um Sinalizador pelo Nome
Você acessa cada bit pelo seu nome de campo, portanto o código permanece claro mesmo quando os dados estão compactados.
var m = Mode{ .bold = true, .italic = false, .underline = false };
if (m.bold) {}Alternar um Sinalizador
Defina ou limpe um sinalizador atribuindo um valor ao campo. Não é necessário mascarar bits manualmente; Zig cuida da aritmética de bits para você.
m.italic = true;A Visão dos Bits Brutos
Precisa do número subjacente? @bitCast transforma a struct de sinalizadores no inteiro de suporte para armazenamento ou comparação.
const bits: u3 = @bitCast(m);Decodificar Bits Recebidos
Está lendo bits de um arquivo ou dispositivo? Converta o inteiro bruto novamente na sua struct para decodificá-lo em sinalizadores nomeados.
const incoming: u3 = 0b101;
const m: Mode = @bitCast(incoming);Enums como Campos de Bits
Um campo pode ser um enum com um inteiro de suporte pequeno, fornecendo opções nomeadas que ainda cabem em poucos bits.
const Speed = enum(u2) { slow, medium, fast };Por que Compactar
Campos de bits economizam memória e correspondem exatamente ao hardware, algo importante em código embarcado, drivers e formatos de arquivos binários.
O Layout Permanece Previsível
Como a struct é compactada, a ordem dos bits nunca muda. O que você declara é o que o hardware e outros programas verão.
Código Claro, Dados Compactos
A grande vantagem: você escreve nomes de campos legíveis enquanto os dados permanecem tão compactos quanto em operações manuais com bits. 🎛️
Verificação Rápida
Pense em quanto espaço um bool ocupa dentro de uma packed struct.
Recapitulação
Você compactou flags em um único inteiro: bools usam um bit, inteiros estreitos e enums podem ser combinados, e @bitCast alterna entre a struct e os bits brutos. 🎉
Perguntas Frequentes
A aula “Campos de bits e sinalizadores” é grátis?
Sim — o texto completo de “Campos de bits e sinalizadores” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.
O que vou aprender em “Campos de bits e sinalizadores”?
Empacote valores booleanos e campos pequenos de forma compacta. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Zig Academy?
Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Campos de bits e sinalizadores”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Zig Academy?
Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- struct empacotada para layout exato
- Inteiros de largura arbitrária, como u3
- Campos de bits e sinalizadores
- extern struct e layout ABI