C语言 位段的简单示例

来源:互联网 发布:银行家算法代码 编辑:程序博客网 时间:2024/06/05 06:53

1. 简单示例,求二进制数中1的个数:

#include <stdio.h>typedef struct {unsigned char a:1;unsigned char b:1;unsigned char c:1;unsigned char d:1;unsigned char e:1;unsigned char f:1;unsigned char g:1;unsigned char h:1;} BYTE;int main() {unsigned char n = 0x3F;BYTE *b = (BYTE*) &n;int num = b->a + b->b + b->c + b->d+ b->e + b->f + b->g + b->h;printf("%d\n", num);}
注:有些书上提到位段成员必须声明为int、signed int 或unsigned int类型,但是在有些编译器中,char和unsigned char类型也是可以的。