datentyp definieren



  • hallo,

    wie definiert man einen eigenen datentyp mit 2 oder 3 bit? geht das überhaupt^^

    cu



  • mit bitfields geht das

    typedef struct bf
    {
      int a: 2;  // 2 bits
      int b: 3;  // 3 bits
    } bf_t;
    

    🙂



  • Nein, das geht nicht. Exakt sowieso nicht, da das kleinste adressierbare ein Byte ist. Und das hat mindestens 8 Bit. Du kannst lediglich einen Typ definieren, der _mindestens_ 2 oder 3 Bit hat. Unter C ist das aber immer noch mit Mehraufwand verbunden.

    ZB:

    typedef struct neuer_typ
    {
        int wert : 2;
    };
    
    neuer_typ a;
    a.wert = 3; // ok
    a.wert = 10; // wird auf 2 Bit abgeschnitten mit eventueller Warnung
    


  • aber er legt ja im speicher für wert einen integer an!?



  • justintim schrieb:

    aber er legt ja im speicher für wert einen integer an!?

    entweder integer oder byte oder sowas, also es werden auf jeden fall mehr bits gebraucht als deine 2-bit variable gross ist. aber dafür könntest du z.b. 4 2-bit variablen in einem byte zusammenfassen

    struct bf
    {
      int a: 2;
      int b: 2;
      int c: 2;
      ind d: 2;
    } combined_variables;
    

    ^^mit etwas glück und den richtigen compilersettings belegen diese 4 variablen nur 1 byte (== 8 bits).


Anmelden zum Antworten