כתיבת קוד — שיעור 25
Structs, Unions, Bitfields ו-Bitwise — הנושא המלא
כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.
T2 · בסיסי200 נק'~15 דק'algorithmic
היפוך Endianness (32-bit)
ממש swap32(n) שהופך את סדר הבתים של מספר 32-סיביות ללא-סימן (big↔little endian). למשל 0x12345678 → 0x78563412.
דוגמאות
hex(swap32(0x12345678)) → '0x78563412'
hex(swap32(0xFF)) → '0xff000000'
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני350 נק'~25 דק'algorithmic
חישוב sizeof עם Padding
ממש struct_size(fields) המחשב את sizeof של struct ב-C לפי כללי היישור. fields היא רשימת טיפוסים; היישור הטבעי שווה לגודל: char=1, short=2, int=4, long/double/ptr=8, float=4. כל שדה מיושר לגבול הגודל שלו (padding בין שדות), ובסוף המבנה מרופד לגבול השדה הגדול ביותר (tail padding).
דוגמאות
struct_size(['char','int','char']) → 12
struct_size(['char','char','int']) → 8
struct_size(['double','char']) → 16
הפתרון נשמר מקומית אוטומטית.