一、位段的定义
struct 名称{
数据类型 变量名 : 所占位数;
数据类型 变量名 :所占位数;
}
位段成员的数据类型应该相同,一般定义为 unsigned int类型,所占位数一般是1,2,4,8,16。
typedef struct _TEST{
unsigned int test1:4;
unsigned int test2:4;
}
应用:使用位段的方法,将一个int类型的数据初始化值设置为十六进制的3085CDCF,将其7-15位设置为101011011。
解答:
1.定义位段,因为我们需要的是改变7-15位的值,所以我们定义如下位段
typedef stuct _MTEST{
unsigned int num1 : 7;//保存0-6位
unsigned int num2 : 9;//保存7-15位
}MT;
int main(){
MT* mt = NULL;//初始化位段的指针
int nData = 0x3085CDCF;
mt = (MT*)&nData;//将nData的地址传递给mt指针
pmt->num2 = 0x15b;//将7-15位即num2所保存的位数,并将值改为0x15b。15b即二进制的101011011
printf("%x",&Data);//结果为3085ADCF
return 0;
}
其他应用,后续完善