【C语言】位段

位段是C/C++中一种特殊的结构体,用于按位存储数据,节省内存空间。位段成员必须是int、unsigned int或signed int,且其长度以位为单位指定。虽然位段不具备跨平台性,但它们在内存分配上根据int或char类型分配空间。通过位段结构,可以方便地处理和操作位字段,提高程序效率。
摘要由CSDN通过智能技术生成

注:位段涉及很多不确定因素,位段是不具有跨平台性的,注重可移植性的程序避免使用位段  

位段的声明 

位段的声明和结构是类似的,有两个不同:

1.位段的成员名后边有一个冒号和一个数字 

2.位段的成员必须是 int、unsigned int 或 signed int

struct A
{
    int _a:2;
    int _b:5;
    int _c:10;
    int _d:30;
};

位段的内存分配

位段的成员可以是 int unsigned int signed int 或者是 char (属于整形家族)类型

位段的空间上是按照需要以 4 个字节( int )或者 1 个字节( char )的方式来开辟的 

struct S
{
    char a:3;
    char b:4;
    char c:5;
    char d:4;
};

struct S s = {0};

s.a = 10;
s.b = 12;
s.c = 3;
s.d = 4;

struct S                //位段S的声明
{
    char a:3;          //给char类型变量 a 3个bit的空间
    char b:4;          //给char类型变量 b 4个bit的空间
    char c:5;          //给char类型变量 c 5个bit的空间
    char d:4;          //给char类型变量 d 4个bit的空间
};
struct S s = {0};      //定义S类型的结构体变量

s.a = 10;              //将10(1010)放入a的空间中,因为a有3个bit位,所以放入2(010)
s.b = 12;              //将12(1100)放入b的空间中,因为b有4个bit位,所以放入12(1100)
s.c = 3;               //将3(11)放入b的空间中,因为c有5个bit位,所以放入3(00011)
s.d = 4;               //将12(1100)放入b的空间中,因为b有4个bit位,所以放入12(1100)

总结

位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。

采用位段结构既节省存储空间,又可方便操作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值