首页 > 其他 > 详细

关于位带操作的写法问题

时间:2019-05-21 18:34:23      阅读:113      评论:0      收藏:0      [点我收藏+]

如果将字节按位带拆分是没问题的,如下

技术分享图片
 1 typedef union
 2 {
 3     unsigned char byte;
 4     struct
 5     {
 6          unsigned char bit0:1;
 7          unsigned char bit1:1;
 8          unsigned char bit2:1;
 9          unsigned char bit3:1;
10          unsigned char bit4:1;
11          unsigned char bit5:1;
12          unsigned char bit6:1;
13          unsigned char bit7:1;
14     }Bits;
15 }strbits_TypeDef;
View Code

但如果是16位的short数据进行拆分以下编译通不过的:

技术分享图片
 1 typedef unsigned     short int u16;
 2 
 3 Typedef union
 4 {
 5     u16     Data16;
 6     
 7     struct
 8     { // 低字节低位,低字节高位,高字节低位,高字节高位
 9     u16     bit0:1; //
10     u16     bit1:1; //
11     u16     bit2:1; //
12     u16     bit3:1; //
13     u16     bit4:1; //
14     u16     bit5:1; //
15     u16     bit6:1; //
16     u16     bit7:1; //
17     u16     bit8:1; //
18     u16     bit9:1; //
19     u16     bit10:1; //
20     u16     bit11:1; //
21     u16     bit12:1; //
22     u16     bit13:1; //
23     u16     bit14:1; //
24     u16     bit15:1;//
25   }Bits;
26 }REG16_TypeDef;
View Code

但是可以用下面写法就没问题:

技术分享图片
 1 typedef union
 2 {
 3        unsigned short int Data16;
 4     struct
 5     {
 6          unsigned char bit0:1;
 7          unsigned char bit1:1;
 8          unsigned char bit2:1;
 9          unsigned char bit3:1;
10          unsigned char bit4:1;
11          unsigned char bit5:1;
12          unsigned char bit6:1;
13          unsigned char bit7:1;
14          unsigned char bit8:1;
15          unsigned char bit9:1;
16          unsigned char bit10:1;
17          unsigned char bit11:1;
18          unsigned char bit12:1;
19          unsigned char bit13:1;
20          unsigned char bit14:1;
21          unsigned char bit15:1;
22     }Bits;
23 }strbits_TypeDef2;
View Code

 

关于位带操作的写法问题

原文:https://www.cnblogs.com/jieruishu/p/10901294.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!