按照名字定义,u无符号 int 整形,数字 8 16,表示多少位的整形,
1字节 uint8_t
2字节 uint16_t
4字节 uint32_t
8字节 uint64_t
详情参考:http://www。
cnblogs。com/baochun968/archive/2011/10/19/2218008。html
bit0:1这句话定义了一个位域,bit0是该位域的域名,而且bit0只占用一个位。
位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。
为了节省存储空间,并使处理简便,C语言提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。
参考:http://zhidao。baidu。com/question/391684179。html
所以上面的结构体,一个元素属性占一位,前面的是2字节,后面也是两个字节。本质上没有区分吧
常规下可以这样测试上面的代码
#include
typedef unsigned short uint16_t ;
typedef unsigned char uint8_t ;
typedef struct
{
uint16_t bit0:1;
uint16_t bit1:1;
uint16_t bit2:1;
uint16_t