C语言中位域(位段)如何详细解析?

2026-04-29 13:452阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2020个文字,预计阅读时间需要9分钟。

C语言中位域(位段)如何详细解析?

有些数据在存储时并不需要占用一个完整的字节,只需占用一个或几个二进制位即可。例如,开关状态只有通和断两种状态,用+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分钟。

C语言中位域(位段)如何详细解析?

有些数据在存储时并不需要占用一个完整的字节,只需占用一个或几个二进制位即可。例如,开关状态只有通和断两种状态,用+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)的内存。

阅读全文