编辑代码

#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;
};

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);
    return 0;
}  

void prtBin(unsigned int number){

    scanf("%d",&number);
    //number = 0xaaaaaaaa;
    unsigned mask = 1u<<31;//0x8000 0000 0000 0000...(32)
    for(;mask;mask>>=1){
        printf("%d",number & mask?1:0);  // a & b 逻辑与(按位运算)
    }
    //JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
    printf("\n");

}