2011-02-10 2 views
2

Я вижу в некоторых C++ код вещей, как:В C++ что такое правильный термин для расщепления Int в биты

// Header 
struct SomeStruct { 
    uint32_t nibble1:4, bitField1:1, bitField2:1, bitField3:1, bitField4:1, 
      padding:11, field5Bits:5, byteField:8; 
}; 

Что это называется? Мне обычно нравится google, прежде чем спрашивать здесь, но я понятия не имею, что даже ввести. Я надеюсь понять это, когда дело доходит до утверждения - это бит-порядок для рассмотрения или просто порядка байтов? Кроме того, каков тип каждого поля - битFieldX должен быть bool, а field5Bits - uint8_t. По крайней мере, это то, что я думаю.

Спасибо.

+0

это нормально спросить, это одна из проблем с Google, чтобы найти что-то, что вам нужно, ключом к его домену или его именем ^^ –

ответ

6
  1. Они называются битовые (MSVC) (GCC)
  2. порядок байтов обычно относится к порядку байт. Однако порядок бит может быть важен, см. Приведенные выше ссылки.
  3. Они ведут себя как unsigned int (uint32_t) в вашем случае.
1

В общем, термин для выбора нескольких битов из большего двоичного целочисленного представления равен маскировка.

1

Что вы размещаете, это упакованная структура. Элементы внутри структуры известны как битовые поля, как опубликовали другие. Они часто используются для представления структур протокола связи, где протокол указывает поля, которые меньше одного байта, или не выровнены по отношению к байту, полуслову или выравниванию слов, которые обычно имеют место.

Поскольку имеется только один тип, каждый элемент структуры является одним и тем же типом uint_32.

Endianess имеет значение для всего, что является частью типа данных, размер которого превышает 1 байт.

+0

Endianess также влияет на содержимое битовых полей. – Bill

Смежные вопросы