c语言位域总结

有时我们存储信息时并不需要用到一个完整的字节,而只需要几个二进制位。C语言提供了一种数据结构,称为位域(位段)用于这种情况。

定义:

struct name{
    类型名 位域名:位域长度;   // 位域长度不能大于8(即一个字节) 
};

注意:
一个位域必须存储在同一个字节中,当有两个连续的位域,在一个字节中存放第一个位域后剩下的空间不足以存放第二个位域,则第二个位域将存放在一个新的字节中,前一个字节多余的未补0

struct bits{
	int a:4;   // 第一个字节 
	int b:5;   // 第二个字节 
};

我们也可以显式使得某个位域存放在一个新的字节中,即使用空域

struct bits{
    int a:4;  // 第一个字节 
    int :0;   // 空域 
    int b:2;  // 第二个字节 
}; 

当一个位域无位域名时,它只是用来作为填充或调整位置,不能被使用(int :4 仅仅是用来占4位)

位域变量的说明
与结构变量说明的方式相同。 可采用先定义后说明,同时定义说明或者直接说明这三种方式。例如:

struct bits{
	int a:8;
	int b:2;
	int c:6;
}data;

说明data为bits变量,共占2个字节。其中位域a占8位,位域b占2位,位域c占6位。

空域大小
空域所占大小和 a的类型及空域的类型二者皆相关。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值