Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

C

Home weitere Möglichkeiten für Variablendeklarationen typedef Zeiger

8.6 Bitfelder

Wenn eine Reihe von Informationen, die nur 2 Zustände besitzen (z.B. ein, aus), abgelegt werden soll, kann jede dieser Informationen in einem Bit gespeichert werden. Sämtliche Zustände können dann in einem long oder int zusammengefaßt werden. Z.B. kann ein Bild farbig sein, gepackt sein, ...

#define IS_FARBE  0x01
#define IS_PACKED 0x02

int flags = IS_FARBE | IS_PACKED;
int uncomp = farbe & ~IS_PACKED;

Die einzelnen Bits müssen nun allerdings mittels der Bitoperationen gesetzt und gelöscht werden. Einfacher ist es, ein Bitfeld zu definieren. Ein Bitfeld wird wie eine Struktur benutzt. Jede Komponente ist eine Menge von Bits und wird Bitfeld genannt. Jede Komponente muß deshalb vom Typ int sein, besser aber unsigned int, und erhält einen Doppelpunkt gefolgt von der Anzahl Bits. Für Zwischenräume können leere Bitfelder angelegt werden, die nur aus einem Doppelpunkt und der Anzahl Bits ohne Namen bestehen. Mit der Anzahl 0 kann ein Bitfeld auf eine Wortgrenze ausgerichtet werden. Benutzt werden die Bitfelder wie Strukturen.

struct {
   unsigned int is_farbe : 1;
   unsigned int is_packed : 1;
} flags;

flags.is_farbe = 1;

Leider ist die Reihenfolge der Bits und auch ob ein Bitfeld eine Wortgrenze überschreiten kann, von der Implementierung abhängig. Damit sind Bitfelder zwar sehr praktisch, um externe Daten wie z.B. die Register von einem Controller zu beschreiben, leider sind solche Programme aber nicht mehr portabel.


Home weitere Möglichkeiten für Variablendeklarationen typedef Zeiger


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum