Mediumbit-field

Что такое bit-field в C++?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Bit-field — член структуры с указанным числом бит. Компактное хранение флагов и бинарных полей протоколов.

struct Date {
    unsigned day   : 5;   // 0..31
    unsigned month : 4;   // 0..15
    unsigned year  : 15;  // 0..32767
};  // 24 бита (3 байта + padding)

Date d{ 9, 7, 2026 };
d.day = 10;

Ограничения: нельзя взять адрес &d.day, layout implementation-defined (порядок бит, пересечение границы int). Для portable кода надёжнее ручные битовые маски через unsigned int.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.