Когда и почему вы будете использовать битовые поля в коде?

Возможный дубликат:
Когда стоит использовать битовые поля?

Недавно я искал побитовые операторы и наткнулся на концепцию битовое. Это кажется интересным и очень классным понятием, но когда и / или зачем человеку использовать это в своем коде?

Я знаю, что он довольно часто используется в программировании встроенных систем, но почему (кажется, я не могу найти ничего о том, почему он полезен)? Есть ли в этом какие-то преимущества? А где еще какие-то места полезны для битовых полей?

2

Решение

Некоторые виды использования, которые сразу приходят на ум:

  • реализация протоколов связи;
  • хранение пользовательских данных в объектах, где у вас ограниченное пространство;
  • расширение структур данных в существующих протоколах (аналогично вышеуказанному);
  • выполнение нескольких тестов за одну операцию;
2

Другие решения

В общем, используйте битовые поля, когда вам не важна скорость и вам не нужна структура памяти. Если вы заботитесь об этих вещах, то не используйте битовые поля.

Если у вас есть набор логических флагов, вы можете упаковать их, используя битовые поля (уменьшая размер, необходимый для хранения). Однако используйте только битовое поле для доступа к битовому полю.

Это проблема классического размера и скорости.

Дополнительным предостережением является то, что если у вас есть набор битовых полей, которые меньше собственного слова, то ваш компилятор, вероятно, попытается дополнить и выровнять структуру битового поля. Таким образом, вы должны в итоге #pragma упаковать структуру или использовать хотя бы собственное слово. Так что, если вы работаете на 32-битной машине и у вас есть 32 логических флага, которые используются только для внутреннего использования, тогда это будет хорошим использованием битовых полей.

3

Я использовал битовые поля как часть объединений, чтобы охватить регистр во встроенной системе, то есть управляющие регистры микроконтроллеров, кодеков. Они очень полезны для изображения физической компоновки регистров в виде программных конструкций, тем самым передавая удобочитаемость. Они обычно использовались для реализации драйверов устройств. Несколько лет назад 8-битные микросхемы с очень небольшим количеством флэш-памяти и оперативной памяти были обычным явлением, и поэтому битовые поля были распространены. В наши дни 32-битные микро с большим количеством оперативной памяти / флэш-памяти означают, что битовые поля не нужны.

2
По вопросам рекламы [email protected]