0Pricing
Zig Academy · Lección

Campos de bits y flags

Empaquete booleanos y campos pequeños de forma compacta.

Campos de bits y flags es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.

Muchas marcas, un solo byte

La configuración suele consistir simplemente en interruptores de activado o desactivado. Al almacenarlos como campos de bits, puede guardar muchas marcas en un único entero pequeño.

Los booleanos ocupan un bit

Dentro de una packed struct, un bool ocupa exactamente un bit. Coloque varios juntos y compartirán un solo byte.

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

Mezclar booleanos y enteros pequeños

Una packed struct puede combinar flags con enteros estrechos para modelar un registro real en el que cada grupo de bits tiene un significado.

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

Leer una marca por nombre

Accede a cada bit mediante su nombre de campo, por lo que el código resulta claro aunque los datos estén estrechamente empaquetados.

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

Cambiar una marca

Establezca o borre una marca asignando un valor al campo. No necesita aplicar máscaras de bits manualmente: Zig se encarga de la aritmética de bits.

m.italic = true;

La vista de los bits sin procesar

¿Necesita el número subyacente? @bitCast convierte la estructura de marcas en su entero de respaldo para almacenarlo o compararlo.

const bits: u3 = @bitCast(m);

Decodificar bits recibidos

¿Lee bits de un archivo o dispositivo? Convierta el entero sin procesar de nuevo en su estructura para decodificarlo en marcas con nombre.

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

Enums como campos de bits

Un campo puede ser un enum con un entero de respaldo pequeño, lo que proporciona opciones con nombre que siguen cabiendo en unos pocos bits.

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

Por qué empaquetar

Los campos de bits ahorran memoria y coinciden exactamente con el hardware, algo importante en código embebido, controladores y formatos de archivos binarios.

El diseño sigue siendo predecible

Como la estructura está empaquetada, el orden de los bits nunca cambia. Lo que declara es lo que verán el hardware y los demás programas.

Código claro, datos compactos

La gran ventaja: escribe nombres de campo legibles mientras los datos siguen siendo tan compactos como con la manipulación manual de bits. 🎛️

Comprobación rápida

Piense cuánto espacio ocupa un bool dentro de una packed struct.

Repaso

Ha empaquetado flags en un entero: los bools ocupan un bit, puede combinar enteros estrechos y enums, y @bitCast permite pasar de la estructura a los bits sin procesar y viceversa. 🎉

Preguntas frecuentes

¿La lección «Campos de bits y flags» es gratis?

Sí — el texto completo de «Campos de bits y flags» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Campos de bits y flags»?

Empaquete booleanos y campos pequeños de forma compacta. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Zig Academy?

No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Campos de bits y flags»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Zig Academy?

Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. packed struct para un diseño exacto
  2. Enteros de ancho arbitrario como u3
  3. Campos de bits y flags
  4. extern struct y diseño de la ABI
← Volver a Zig Academy