C语言中位域(位段)如何详细解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2020个文字,预计阅读时间需要9分钟。
有些数据在存储时并不需要占用一个完整的字节,只需占用一个或几个二进制位即可。例如,开关状态只有通和断两种状态,用+0和+1表示,也是用一个二进制位。这种存储方式正是基于这种考虑。
有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位。正是基于这种考虑,C语言又提供了一种叫做位域的数据结构。在结构体定义时,我们可以指定某个成员变量所占用的二进制位数(Bit),这就是位域。请看下面的例子:
struct bs{
unsigned m;
unsigned n: 4;
unsigned char ch: 6;
};
:后面的数字用来限定成员变量占用的位数。成员 m 没有限制,根据数据类型即可推算出它占用 4 个字节(Byte)的内存。成员 n、ch 被:后面的数字限制,不能再根据数据类型计算长度,它们分别占用 4、6 位(Bit)的内存。
本文共计2020个文字,预计阅读时间需要9分钟。
有些数据在存储时并不需要占用一个完整的字节,只需占用一个或几个二进制位即可。例如,开关状态只有通和断两种状态,用+0和+1表示,也是用一个二进制位。这种存储方式正是基于这种考虑。
有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位。正是基于这种考虑,C语言又提供了一种叫做位域的数据结构。在结构体定义时,我们可以指定某个成员变量所占用的二进制位数(Bit),这就是位域。请看下面的例子:
struct bs{
unsigned m;
unsigned n: 4;
unsigned char ch: 6;
};
:后面的数字用来限定成员变量占用的位数。成员 m 没有限制,根据数据类型即可推算出它占用 4 个字节(Byte)的内存。成员 n、ch 被:后面的数字限制,不能再根据数据类型计算长度,它们分别占用 4、6 位(Bit)的内存。

