Axel Rogat
Objektorientiertes Programmieren mit C++ und JAVA
 
6.7: typedef Kapitel 6 7.0: Funktionen 
 
  6.8 Bitfelder  
 

Eine spezielle Form von Membern von structs sind Bitfelder. Sie werden allerdings völlig implementationsabhängig abgespeichert und deshalb nur in vergleichsweise exotischen Zusammenhängen verwendet. Wir werden nur kurz auf sie eingehen.

Ein Bitfeld ist eine Sammlung von (theoretisch) beliebig vielen Bits, die zusammen als eine ganze Zahl interpretiert werden. Die Speicherung ist implementationsabhängig; meistens ist auch die Anzahl von Bits durch die jeweilige Größe von int beschränkt. Aufeinanderfolgende Bitfelder werden meistens hintereinander im Speicher abgelegt und teilen sich gegebenenfalls Bytes. Bitfelder der Länge 0 synchronisieren die Felder mit den Grenzen der Hauptspeichereinheiten (z.B. mit 32 Bit). Nicht jedes Feld muß benannt sein; es dient dann nur zum Auffüllen und kann nicht selbst angesprochen werden.

Mit folgenden Bitfeldern könnte man ein Datum speicherplatzsparend speichern. Die Gesamtanzahl von Bits ist 16, und meistens wird die Struktur auch tatsächlich in 2 Bytes untergebracht:

struct datum { unsigned day:5, month:4, year:7; };

Der Grundtyp muß ganzzahlig sein. Bei signed-Typen wird die Bitfolge als vorzeichenbehaftete Zahl (im Zweierkomplement) interpretiert, bei unsigned-Typen wird mit vorzeichenlosen Zahlen gearbeitet.

 
6.7: typedef Startseite 7.0: Funktionen 
 

© 1998 Axel Rogat