Битовые поля часто используются при программировании микроконтроллеров, потому что это помогает отображать регистры в памяти. Например, для 8-битного регистра, если каждый бит имеет различное значение / использование, можно представить значение регистра в виде структуры:
struct exception_register
{
bool enable_irq_0: 1;
bool enable_irq_1: 1;
bool enable_irq_2: 1;
bool enable_irq_3: 1;
bool irq_flag_0: 1;
bool irq_flag_1: 1;
bool irq_flag_2: 1;
bool irq_flag_3: 1;
};
byte* the_register = 0x1234; // where 0x1234 is the address of the register in memory.
Тогда включение исключений 2 можно сделать так:
the_register->enable_irq_2 = true;
Что более читабельно, чем:
*the_register |= (1 << 2);
Это не предназначено для ответа на вопрос, но может помочь понять, почему битовые поля могут быть полезны.