2017-02-20 3 views
1

Ich lese über Bitfelder von: http://en.cppreference.com/w/cpp/language/bit_field.Was bedeutet "Straddle" in einem bitweisen Kontext?

Der Artikel erwähnt "straddl (e)" ing Bits. Ein Beispiel Kontext enthält ...

„Benachbarte Bitfeld Mitglieder gepackt werden können, das einzelne Bytes zu teilen und zu überspannen.“

Was bedeutet dieses Wort in einem bitweisen Feld?

+1

Überprüfen Sie das zweite Beispiel auf dieser Seite. Die zitierte Erklärung bedeutet, dass das gleiche Byte mehrere Felder hosten würde (was normalerweise nicht passiert). – zerkms

+0

Es bedeutet, dass Bitfelder mehrere Bytes umfassen oder ein einzelnes Byte belegen können und das hängt vollständig von der Implementierung ab. –

+0

"span across", Teil der Bits in einem Byte, anderer Teil im nächsten Byte. –

Antwort

2

ich dieses Wort verwendet wird, wenn die Seite zu schreiben, um die Situation zu beziehen, wie richtig in den Kommentaren gesichtet, im zweiten Beispiel auf dieser Seite gezeigt:

#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 
} 

hier (unter der Annahme sizeof(S) 2) das Feld b2 ist 6 Bits lang, die ersten 3 Bits sind in dem ersten Byte, die zweiten 3 Bits sind in dem zweiten Byte. Es erstreckt sich über zwei Bytes. (Das nächste Beispiel zeigt, wie alle 6 Bits in ein Byte erzwungen werden)

Verwandte Themen