【备战春招】第4天 嵌入式工程师学习笔记
课程信息
- 课程名称:物联网/嵌入式工程师
- 章节名称:第3周之第二讲 1-11 C语言中的位域1
- 讲师姓名:大白老师
课程内容概述
1. 简介
本节介绍了位域:有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有 0 和 1 两种状态,用 1 位二进位即可。为了节省存储空间,并使处理简便,C 语言又提供了一种数据结构,称为"位域"或"位段"。
2. 枚举
2.1 使用方法
struct 位域结构名
{
类型说明符1 位域名1:位域长度1; //最低位;
类型说明符2 位域名2:位域长度2; //次低位;
类型说明符3 位域名3:位域长度3;
……
类型说明符N 位域名N:位域长度M; //最高位;其中,N∈[0,1,2…..],M∈[0,8];
};
注:
类型说明符 常用int,unsigned int ,signed int,unsigned char,char这几种类型。
位域长度 位域中的数量位,要小于或等于类型的宽度
例如:
struct Bit
{
int a:8;
int b:2;
int c:6;
};
struct Bit data;
说明位域变量data,共占用2个字节;其中,位域a占8bit,位域b占2bit,位域c占6bit
2.2 代码示例
#include <stdio.h>
#include <string.h>
struct
{
unsigned int age;
unsigned int sex;
} student1;
struct
{
unsigned int age:1;
unsigned int sex:1;
} student2;
int main( )
{
printf( "sizeof(student1) : %d\n", sizeof(student1));
printf( "sizeof(student2) : %d\n", sizeof(student2));
return 0;
}
运行结果
sizeof(student1) : 8
sizeof(student2) : 4
学习心得
C语言中的位域,在节省空间时用处很大。