C++中的位域

位域

位域把数据以位的形式紧凑存储,并允许程序员对此结果进行位操作。

位域大小与对齐

  • 位域结构体中未命名的结构体仅起到填充作用unsigned int : 2;
  • C语言中位域使用unsigned int作为基本单位,即使一个结构唯一成员为1Bit,结构体大小也和一个unsigned int 结构相同
  • 一个位域成员不允许跨越两个unsigned int的界限,如果接下来的位域成员与该位域成员总位数超过一个unsigned int的大小,编译器会自动将下一个位域成员进行移位,使其对其下一个unsigned int
  • 可以使用一个宽度为0的未命名位域成员使下一位域成员与下一个unsigned int对齐unsigned int : 0;

位域重映射

  • 位域结构体地址映射到整型(int) 地址时会将位域各位清零

联合(Union)

在联合中,各成员共享一段内存空间,一个联合变量长度等于各成员中的最长长度。(共享 指的是该联合变量可被赋予任一成员的值,且赋予新值会冲去旧值)

  • 可通过将位域声明为联合变量成员,利用联合的其他成员将位域归零
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值