秋枫林的专栏

有志者,事竟成,破釜沉舟,百二秦关终归楚;苦心人,天不负,卧薪尝胆,三千越甲可吞吴。

用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
colin719的公告
<img src=http://blog.csdn.net/images/blog_csdn_net/colin719/75532/t_gif007.gif width=128 height=128 border="0"><br> ———————————<br/> <b><font color="blue">李锐</font></b><br> <b><font color="blue">中国科学院计算技术研究所</font></b><br> <b><font color="blue">来自河南 服务北京</font></b><br> <a href="mailto:colin719@126.com" >lirui@ncic.ac.cn</A><br> ———————————<br> 除特别说明外,本Blog中的内容均为本人原创,本人依法保留Blog内原创文章的所有权利,如需转载,请注明作者及出处。未经许可,不得将本Blog内文章用于任何盈利性用途。<br><br> ———————————
文章分类
开发环境控制
CVS使用手册
CVS培训讲义
CVS常用命令速查手册
给CVS初学者
学习资源
使用 Eclipse 平台共享代码
存档

转载  位段结构 收藏

位段以位为单位定义结构体(或共用体)中成员所占存储空间的长度。
 含有位段的结构体类型称为位段结构。

位段结构也是一种结构体类型,只不过其中含有以位为单位定义存储长度的整数类型位段成员。采用位段结构既节省存储空间,又可方便操作。

位段结构中位段的定义格式为:
         unsigned <成员名>:<二进制位数>
例如:
struct bytedata
{unsigned a:2;   /*位段a,占2位*/
 unsigned:6;  /*无名位段,占6位,但不能访问*/
 unsigned:0;     /*无名位段,占0位,表下一位段从下一字边界开始*/
 unsigned b:10;  /*位段b,占10位*/
 int i;          /*成员i,从下一字边界开始*/
}data;

位段数据的引用:
同结构体成员中的数据引用一样,但应注意位段的最大取值范围不要超出二进制位数定的范围,否则超出部分会丢弃。
例如:data.a=2;   但  data.a=10;就超出范围(a占2位,最大3)

关于位段数据,注意以下几点:

(1)一个位段必须存储在同一存储单元(即字)之中,不能跨两个单元。如果其单元空间不够,则剩余空间不用,从下一个单元起存放该位段。
(2)可以通过定义长度为0的位段的方式使下一位段从下一存储单元开始。
(3)可以定义无名位段。
(4)位段的长度不能大于存储单元的长度。
(5)位段无地址,不能对位段进行取地址运算。
(6)位段可以以%d,%o,%x格式输出。
(7)位段若出现在表达式中,将被系统自动转换成整数。

 

发表于 @ 2007年01月13日 20:54:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:最近编程的一点心得 | 新一篇:SSH不输入密码连接远程Linux主机

  • 发表评论
  • 评论内容:
  •  
Copyright © colin719
Powered by CSDN Blog