位段
-
把一个int的若干位组合成一个结构
struct {
unsigned int leading :3;
unsigned int FLAG1 : 1;
unsigned int FLAG2 : 1;
int trailing :11;
}; // name : n -->name这个成员占n个比特
- 把一个位段换算成二进制
#include <stdio.h>
void prtBIN(unsigned int number);
struct U0 {
unsigned int leading : 3;
unsigned int FLAG1 : 1;
unsigned int FLAG2 : 1;
int trailing : 27;
}; //3+1+1+27=32
int main()
{
struct U0 uu;
uu.leading = 2;
uu.FLAG1 = 0;
uu.FLAG2 = 1;
uu.trailing = 0;
printf("sizeof(uu)=%lu\n",sizeof(uu));
prtBIN(*(int *)&uu); //把指向struct类型的指针强制转换成指向int类型的指针
return 0;
}
void prtBIN(unsigned int number)
{
unsigned mask = 1u<<31;
for ( ; mask ; mask>>=1){
printf("%d",number & mask?1:0);
}
pritnf("\n";)
}