1x Bit Feld bitte!



  • Hallo zusammen,
    hab auch mal 'ne Frage zu Bitfeldern. Nehmen wir mal an ich habe folgende Definition:

    struct bit
    {
      short var: 4;
    }
    

    1. Frage: Bedeutet das, das die ersten 4 Bits des 16 Bits großen shorts für 'var' genutzt werden?
    2. Frage: Nehmen wir an, in diesen vier Bitfeldern stünde z.B. 1010, heißt das, daß wenn ich nun eine Abfrage mache wie

    short x = bit.var
    

    , daß nun in 'x' der Wert '10' steht, oder was?

    Danke für eure Hilfe
    Gruß
    RG_Basser

    [ Dieser Beitrag wurde am 12.03.2003 um 12:47 Uhr von rg_Basser editiert. ]



  • @1: genau so isses. Der Compiler darf aber auch noch mehr von deinen Bitfeldern in der gleichen Speichereinheit unterbringen, je nach dem, wieviele reinpassen (hier zwei). Du kannst also Speicherplatz sparen.
    @2: jo.

    luke.



  • einfach mal die Werte ausgeben oder einfach die Struktur debugen.

    mfg



  • falsch:

    je nach dem, wieviele reinpassen (hier zwei).

    natürlich vier, sorry.



  • Original erstellt von rg_Basser:
    **```
    struct bit
    {
    short var: 4;
    }

    geht gar nicht
    die gesamtgröße muss immer "ganz-bytig" sein, also 4 bits als größe der struktur geht net! was soll denn dann sizeof zurückliefern?!?!?!?!?!



  • was soll denn dann sizeof zurückliefern?!?!?!?!?!

    1 bit - 0,125
    2 bits - 0,25
    3 bits - 0,375
    4 bits - 0,5
    5 bits - 0,625
    6 bits - 0,75
    7 bits - 0,875
    8 bits - 1



  • sizeof liefert eine compilerzeit konstante und die ist zeimlich sicher kein float...



  • ungern gebe ich meine Erkenntnisse preis 🕶 :
    "sizeof ist für Bitfelder nicht zulässig"
    Orginalton Borland-Compiler.
    Das mit den Bitfeldern könnt ihr nur mal probieren, wenn ihr eine Datei anlegt. Eine mit und eine ohne. Iss jedenfalls die schnellste Variante.
    Vielleicht läßt ja ein anderer Compiler ein sozeof für Bitfelder zu...



  • @greg:
    Die Frage war ja auch nicht, ob mein Beispiel funktioniert, sondern sollte lediglich als 'Beispiel' (wie der Name schon sagt) zur Veranschaulichung dienen 😉
    P.S. Wenn ein Struct ganzbytig sein muß, was mach ich dann mit den restlichen Bits, die ich nicht brauche? Ein Dummy-Bitfeld mit den restlichens Bits?!?



  • Original erstellt von rg_Basser:
    Ein Dummy-Bitfeld mit den restlichens Bits?!?

    Die meistern Compiler machen das von ganz alleine 😃


Anmelden zum Antworten