位段

1.位段的声明和结构类似,但它的成员是一个或多个位的字段。这些不同长度的字段实际上存储于一个或多个整型变量中。

2.位段的声明和任何普通的结构成员声明相同,但有两个例外。

1>位段成员必须声明为int,singed int 或unsigned int类型。

2>其次,在成员名的后面是一个冒号和一个整数,这个整数指定该位段所占用的位的数目。

eg:

struct  CHAR {

      unsigned  int  ch   : 7;

      unsigned  int  font  :6;

      unsigned  int size  :19;

};

struct  CHAR ch1

说明:

² 用signed或unsigned整数显示地声明位段是个好方法。如果位段声明为int类型,它究竟被解释为有符号数还是无符号数是由编译器决定的。

² 注重可移植性的程序应该避免使用位段。由于下面这些与实现有关的依赖性,位段在不同的系统中可能有不同的结果。

1>int位段被当作有符号数还是无符号数

2>位段中位的最大数目。许多编译器把位段成员的长度限制在一个整型值的长度之内,所以一个能够运行于32位整数的机器上的位段声明可能在16位整数的机器上无法运行。

3>位段中的成员在内存中是从左向右分配还是从右向左分配

4>当一个声明指定了两个位段,第2个位段比较大,无法容纳于第1个位段剩余的位时,编译器有可能把第2个位段放在内存的下一个字,也可能直接放在第1个位段后面,从而在内存位置的边界上形成重叠。

二.位段的好处

1.它能够把长度为奇数的数据包包装在一起,节省存储空间2.另一个使用位段的理由是由于它们可以很方便地访问一个整型值的部分内容。

说明:

使用位段只是基于方便的目的。任何可以用位段实现的任务都可以使用移位和屏蔽来实现(既用位操作符:| ,&, ~)。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冀博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值