您的位置:首页 > 编程语言 > C语言/C++

C语言的位域

2016-01-26 11:11 253 查看
C语言中对数据的每一个位进行管理,可以是用位域+结构体+联合体,如下:
union dbit
{
struct bit//结构体的最大宽度1个位,对齐时1字节对内存对齐
{
bool  b0:1;//对应value的最低位
bool  b1:1;
bool  b2:1;
bool  b3:1;
bool  b4:1;
bool  b5:1;
bool  b6:1;
bool  b7:1;
};
byte value;
};

int main(int argc, char* argv[])
{

dbit c;
c.b0 = -1;//取值的最低位
c.b1 = 1;
c.b2 = 1;
c.b3 = 0;
c.b4 = 1;
c.b5 = 1;
c.b6 = 1;
c.b7 = 0;

printf("%d", c.value );

getchar();
return 0;
}
可以想到的一个应用是用来管理各种开关状态。用普通数组也能完成。用位域的话,以紧凑的方式分配内存,能节省一些空间。还有一个好处是,当宽度为1时,赋值时只有0和1两种值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: