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).