位段
什么是位段
在大多數(shù)的計算機系統(tǒng)中, 一個字節(jié)是由八個更小的, 稱作為位的單位組成的。位是比字節(jié)更小的單位。位只有兩個值, 1 或 0 。因此, 存儲在計算機存儲器中的一個字節(jié)可以看成由八個二進制數(shù)字形成的串。有時, 我們希望不僅對字節(jié)進行操作, 也要能對位進行操作。但是, 說明一個用作標志的普通變量至少要用一個字節(jié)---8 位, 而在某些計算機系統(tǒng)中則可能是 16 位。如果我們想在一個很大的表中存儲很多標志, 那么 "被浪費" 的內存空間是很可觀的。在 C 語言中, 一種方法是用叫做位段的構造類型來定義一個壓縮信息的結構。
位段(bit-field)是以位為單位來定義結構體(或聯(lián)合體)中的成員變量所占的空間。含有位段的結構體(聯(lián)合體)稱為位段結構。采用位段結構既能夠節(jié)省空間,又方便于操作。
位段的格式以及類型支持
type [var]: digits
其中type只能為int,unsigned int,signed int三種類型。位段名稱var是可選參數(shù),即可以省略。digits表示該位段所占的二進制位數(shù)。
struct node
{
unsigned int a:4; //位段a,占4位
unsigned int :0; //無名位段,占0位
unsigned int b:4; //位段b,占4位
int :6; //無名位段,占6位
};