位域:是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。
定义
类似于结构体,区别在于按位分配
struct bs
{
int a:8; //a的长度为8bit
int b:2; 类型说明符 位域名:位域长度
int c:6;
};
①一个位域必须存储在同一个字节中,不能跨字节。
若一个字节所剩空间不够存放另一位域时,应从下一字节起存放该位域。
struct bs
{
unsigned a:4;//a占第一字节的前4位
unsigned :0;//无位域名,仅用于填充或调整位置→不能使用
unsigned b:4;//b从第二字节开始4位
unsigned c:4;
//位域不能跨字节:前面字节放得下就放,放不下则放到后面的字节
}bit,*pbit;
bit.a=1;
bit.b=7;
bit.c=15