位段、枚举、联合(共用体)三者有何内在联系?
- 内容介绍
- 文章标签
- 相关推荐
本文共计421个文字,预计阅读时间需要2分钟。
一、位段简介
1.位段是一种数据结构,用于将数据存储在位级别上,提高存储效率。
2.位段通常用于定义具有固定位数的数据,如IP地址、MAC地址等。
二、位段形式
struct A{ int a : 3; int b : 4; int c : 10; int d : 30;};A1;与结构体类相似,区别在于位段将结构体的=替换为:,冒号后的数字代表该变量占用的二进制位。
一、位段
1.位段简介
2.位段形式
struct A {
int a : 3;
int b : 4;
int c : 10;
int d : 30;
}A1;
与结构体类似,区别在于位段把结构体的 “=” 换为 “:”, “:”之后的数字代表该变量占用的二进制位数(位段中的位即二进制位)
3.位段的大小
int main() {
printf("%d", sizeof(A1)); //8
return 0;
}
本应占47个比特位,但由于int型的位段以4个字节开辟空间,所以最终大小为8字节
4.位段的内存分配
为什么在一个字节内从高地址向低地址分配?(a在b的左边)
(1)与字节序无关,字节序是在一个数据内字节之间的排列顺序,而不是字节本身内部的比特位排列顺序
(2)与编译器的种类有关
5.位段的跨平台问题
6.位段的应用
在数据网络传输时,对数据包进行压缩
二、枚举
本文共计421个文字,预计阅读时间需要2分钟。
一、位段简介
1.位段是一种数据结构,用于将数据存储在位级别上,提高存储效率。
2.位段通常用于定义具有固定位数的数据,如IP地址、MAC地址等。
二、位段形式
struct A{ int a : 3; int b : 4; int c : 10; int d : 30;};A1;与结构体类相似,区别在于位段将结构体的=替换为:,冒号后的数字代表该变量占用的二进制位。
一、位段
1.位段简介
2.位段形式
struct A {
int a : 3;
int b : 4;
int c : 10;
int d : 30;
}A1;
与结构体类似,区别在于位段把结构体的 “=” 换为 “:”, “:”之后的数字代表该变量占用的二进制位数(位段中的位即二进制位)
3.位段的大小
int main() {
printf("%d", sizeof(A1)); //8
return 0;
}
本应占47个比特位,但由于int型的位段以4个字节开辟空间,所以最终大小为8字节
4.位段的内存分配
为什么在一个字节内从高地址向低地址分配?(a在b的左边)
(1)与字节序无关,字节序是在一个数据内字节之间的排列顺序,而不是字节本身内部的比特位排列顺序
(2)与编译器的种类有关
5.位段的跨平台问题
6.位段的应用
在数据网络传输时,对数据包进行压缩
二、枚举

