Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7688120
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: C/C++

2011-05-31 10:45:54

  1. /*
  2.  *    位段的使用
  3.  *    Lzy        2011-5-29
  4.  */

  5. #include <stdio.h>

  6. struct status                        /*位段类型定义*/
  7. {
  8.     unsigned char bit1:    2;            /*定义bit1占2个二进制位,其范围0~8*/
  9.     unsigned char bit2:    2;            
  10.     unsigned char bit3:    2;
  11.     unsigned char bit4:    2;    
  12. };

  13. union Data                            /*定义联合体*/
  14. {
  15.     unsigned int x;
  16.     struct status Byte;
  17. };

  18. int main(void)
  19. {
  20.     union Data data = {0};        /*初始化*/

  21.     data.Byte.bit1 = 0x00;        /*第1、2位置00B*/
  22.     data.Byte.bit2 = 0x01;        /*第3、4位置01B*/
  23.     data.Byte.bit3 = 0x02;        /*第5、6位置10B*/
  24.     data.Byte.bit4 = 0x03;        /*第7、8位置11B*/

  25.     printf("%x\n",data.x);        /*data.x == 0xe4*/
  26. }
  1. /*
  2.  *    无名位段的使用
  3.  *    Lzy        2011-5-29
  4.  */

  5. #include <stdio.h>

  6. struct status                        /*位段类型定义*/
  7. {
  8.     unsigned int bit1:    4;            /*定义bit1占4个二进制位,其范围0~31*/
  9.     unsigned int     :    0;            /*定义长度为0的无名位段,其后续位段从下4个字节(int)开始存储*/    unsigned int bit3:    4;
  10.     unsigned int bit4:    4;    
  11. };

  12. union Data                            /*定义联合体*/
  13. {
  14.     int x[2];
  15.     struct status Byte;
  16. };

  17. int main(void)
  18. {
  19.     union Data data;
  20.     data.x[1] = 0x56;

  21.     printf("%d\n",data.Byte.bit3 + data.Byte.bit4);
  22. }
阅读(2072) | 评论(0) | 转发(3) |
0

上一篇:链表排序

下一篇:文件编程

给主人留下些什么吧!~~