把一个位段换算成二进制

位段

  • 把一个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";)
}

猜你喜欢

转载自blog.csdn.net/qq_26565435/article/details/82836088
今日推荐