位段: 当结构体或共用体中包含有符号或者无符号整形时,c语言规定允许用户指定这些成员所占的存储单元,这就是位段
声明方式:位段的成员必须为整型 位段成员名后面有一个冒号和一个数字
typedef struct
{
int a:2; //占两个位
int b:5; //接在a后面占5个位
int : 25; //无名位段
unsigned int c:30; //因为c的要占位数太大之前的一个int剩余的位数不够它
用,因此它会再开辟一个int,32位用于存储它自己
}size;
注意; int位段被当成有符号数还是无符号数是不确定的
位段中最大位的数目不确定
位段中的成员在内存中是从左向右分配还是从右向左分配尚未定义
当一个结构体中包含两个位段,第二个位段比较大导致第一个位段剩余的位放不下时,会再 开辟一个32位存储,但是第一个位段剩余的位是否还利用不确定
跟结构相比,位段更省空间,但是有跨平台问题出现
位运算:位运算用于计算数据以二进制存储时的每一位( 0 1)
符号 意义 解释
& 按位与运算 当两个数对应的位都为1时