赞
踩
在内存中,1byte = 8bit,即 1 字节等于 8 位。位由两个值组成,即 0 和 1 。因此,存储在计算机中的 1 字节,可以看成是8个⼆进制数字(0 和1)组成的串。了解了内存空间的最⼩单位,那什么是位段?位段又有什么优点呢?
在 C 语⾔中,允许在⼀个结构体中以位为单位来指定其成员所占内存的长度。这种以位为单位的成员,便称为 “位段〞或者 “ 位域”。例如:
- struct data_bit
- {
- unsigned a : 3;
- unsigned b : 3;
- unsigned c : 4;
- unsigned d : 8;
- int n;
- } data1;
其中 a、 b、c、d 分别占 3位、3位、4位、8位,⼀共占 2 字节;⽽ n 为 int 型,占 2 字节,在这个结构体中总共占了 4 字节。
使⽤位段的⼀⼤优点就是可以节省不必要的空间。实际上,在数据通信、电⼦应⽤、 参数检测等领域中,控制信息往往只占⼀个字节中的⼏个⼆进制位。例如,开关的设计, 只需要⼀个⼆进制位就可以表示,0 表示关,1 表示开,没有必要使⽤⼀个字节。那么, 位段就避免了这种资源的浪费,可以根据实际应⽤中的需要合理分配内存。
关于位段的定义,有⼀点要注意,位段成员的类型必须指定为 unsigned 或 int 类型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。