2019-12-17
2019-12-16 本文已影响0人
Binbinbins
C++例题4-10 【位域】
设计一个结构体储存学生的成绩信息,包括成绩(0~10^9),年级分为freshman, sophomore, junior, senior 四种,成绩包括A,B,C,D四个等级。
分析:学号需要27个二进制位,(227>109),而年级和成绩分别需要2个二进制位
如果用整型存储学号(占用4字节),分别用枚举类型存储年级和成绩(各至少1字节),则总共至少占用6字节。如果采用位域,则需要27+2+2=31个二进制位,只需要4个字节就能存下。【1个字节=8个二进制位】
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个二进制位时sizeof()都显示为8个字节。