C++例題4-10 【位域】
設(shè)計一個結(jié)構(gòu)體儲存學(xué)生的成績信息,包括成績(0~10^9)罩扇,年級分為freshman, sophomore, junior, senior 四種,成績包括A降盹,B馅笙,C,D四個等級蔬捷。
分析:學(xué)號需要27個二進(jìn)制位垄提,(227>109),而年級和成績分別需要2個二進(jìn)制位
如果用整型存儲學(xué)號(占用4字節(jié))抠刺,分別用枚舉類型存儲年級和成績(各至少1字節(jié))塔淤,則總共至少占用6字節(jié)。如果采用位域速妖,則需要27+2+2=31個二進(jìn)制位高蜂,只需要4個字節(jié)就能存下『比荩【1個字節(jié)=8個二進(jìn)制位】
enum Level{freshman, sophomore, junior, senior};
enum Grade{A,B,C,D};
class Student{
private:
unsigned number:27;
Level level:2;
Grade grade:2;
};
占33~64個二進(jìn)制位時sizeof()都顯示為8個字節(jié)备恤。