0Pricing
Zig Academy · درس

حقول البتات والعلامات

رصّ القيم المنطقية والحقول الصغيرة بإحكام

حقول البتات والعلامات درس مجاني في Zig Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Zig Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Zig Academy 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

Many Flags, One Byte

Settings are often just on-or-off switches. Packing them as bit fields stores many flags in a single tiny integer.

Booleans Take One Bit

Inside a packed struct, a bool occupies exactly one bit. Stack several together and they share a single byte.

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

Mix Bools and Small Ints

A packed struct can blend flags with narrow integers, modeling a real register where each bit group means something.

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

Read a Flag by Name

You access each bit through its field name, so the code reads clearly even though the data is tightly packed.

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

Flip a Flag

Set or clear a flag by assigning to the field. No bit masking by hand, Zig handles the bit math for you.

m.italic = true;

The Raw Bits View

Need the underlying number? @bitCast turns the flag struct into its backing integer for storage or comparison.

const bits: u3 = @bitCast(m);

Decode Incoming Bits

Reading bits from a file or device? Cast the raw integer back into your struct to decode it into named flags.

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

Enums as Bit Fields

A field can be an enum with a small backing integer, giving named choices that still fit in just a few bits.

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

Why Bother Packing

Bit fields save memory and match hardware exactly, which matters in embedded code, drivers, and binary file formats.

Layout Stays Predictable

Because the struct is packed, the bit order never shifts. What you declare is what hardware and other programs will see.

Clear Code, Tight Data

The big win: you write readable field names while the data stays as compact as hand-rolled bit twiddling. 🎛️

Quick Check

Think about how much space a bool uses inside a packed struct.

Recap

You packed flags into one integer: bools take one bit, mix in narrow ints and enums, and @bitCast moves between struct and raw bits. 🎉

الأسئلة الشائعة

هل درس «حقول البتات والعلامات» مجاني؟

نعم — نص درس «حقول البتات والعلامات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Zig Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Zig Academy 4 دروس في المجموع.

ماذا ستتعلم في «حقول البتات والعلامات»؟

رصّ القيم المنطقية والحقول الصغيرة بإحكام تتمرن على Zig Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Zig Academy؟

لا تُشترط خبرة سابقة. Zig Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «حقول البتات والعلامات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Zig Academy هذا؟

نعم. كل درس في Zig Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏packed struct للتخطيط الدقيق
  2. أعداد صحيحة بعروض اعتباطية مثل u3
  3. حقول البتات والعلامات
  4. ‏extern struct وتخطيط ABI
← العودة إلى Zig Academy