天天看點

C語言 位段的簡單示例

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類型也是可以的。