2017-02-20 112 views
1

Я читаю о биттонах от: http://en.cppreference.com/w/cpp/language/bit_field.Что означает «оседлать» в Поразрядном контексте?

В статье упоминаются биты «straddl (e)». Пример контекст включает в себя ...

«Прилегающие разрядные члены поля могут быть упакованы, чтобы разделить и оседлать отдельных байтов.»

Что означает это слово в побитом поле?

+1

Проверьте второй пример на этой странице. В приведенном ниже объяснении подразумевается, что один и тот же байт будет содержать несколько полей (что обычно не происходит) – zerkms

+0

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

+0

«span through», часть бит в одном байте, другая часть в следующем байте. –

ответ

2

Я использовал это слово при написании страницы, чтобы сослаться на ситуацию, как правильно пятнистой в комментариях, как показано на 2-м, например, на этой странице:

#include <iostream> 
struct S { 
    // will usually occupy 2 bytes: 
    // 3 bits: value of b1 
    // 2 bits: unused 
    // 6 bits: value of b2 
    // 2 bits: value of b3 
    // 3 bits: unused 
    unsigned char b1 : 3, : 2, b2 : 6, b3 : 2; 
}; 
int main() 
{ 
    std::cout << sizeof(S) << '\n'; // usually prints 2 
} 

Здесь (при условии, sizeof(S) 2) поле b2 имеет длину 6 бит, первые 3 бита находятся в первом байте, а остальные 3 бита находятся во втором байте. Он охватывает два байта. (следующий пример показывает, как заставить все 6 бит в один байт)