位段

转载 2004年10月22日 21:20:00
这是位段,将一个字节分为几段来存放几个信息。所谓位段是以位为单位定义长度的结构体类型中的成员。如:
struct packed-data{
unsigned a:2;
unsigned b:6;
unsigned c:4;
unsigned d:4;
int I;
}data;
其中a,b,c,d分别占2位,6位,4位,4位。I为整型,占4 个字节。
对于位段成员的引用如下:
data.a = 2;等,但要注意赋值时,不要超出位段定义的范围。如位段成员a定义为2位,最大值为3,即(11)2,所以data.a=5;就会取5的两个低位进行赋值,就得不到想要的值了。
关于位段的定义和引用,有几点重要说明:
①若某一个段要从另一个字开始存放,可以定义:
unsigned a:1;
unsigned b:2;
unsigned :0;
unsigned c:3; (另一单元)
使用长度为0的位段,作用就是使下一个位段从下一个存储单元开始存放。
②一个位段必须存放在用一个存储单元中,不能跨两个单元。
③可以定义无名位段。如:
unsigned a:1;
unsigned :2; (这两位空间不用)
unsigned b:3;
④位段的长度不能大于存储单元的长度,也不能定义位段数组。

结构体位段

Members of structures or unions can also be bit-fields  . A  bit-field   is an integer variable that...
  • oney139
  • oney139
  • 2012年09月15日 11:08
  • 1832

位段详解。

C语言想结构体中以位为单位来指定其成员所占内存的长度。 如: struct data{ unsigned a:2; unsigned b:4; unsigned c:16; int i; ...
  • U201017971
  • U201017971
  • 2016年01月26日 09:43
  • 653

一道关于位段及大小端的面试题

输出下面这一道题的输出:struct mybitfields { unsigned short a : 4; unsigned short b : 5; unsigned sh...
  • qq_26768741
  • qq_26768741
  • 2016年04月24日 14:37
  • 883

C 位段的内存分配

什么是位段? strucr code { int c1 :7; int c2 :6; int c3 :19; }   这就是位段了。跟结构体很类似,不过他在每个成员的定义的后面多...
  • xjd34456
  • xjd34456
  • 2015年04月22日 17:53
  • 374

结构体 - 位段

每天进步一点点! 编译器会尽可能的避免储存空间的浪费,这个特性在结构体中显得尤为重要。 我们知道在结构体中为了提升效率和避免储存空间的浪费,在储存其成员时要进行内存对齐,但是除了这个做法之外,这里...
  • jelly_9
  • jelly_9
  • 2016年12月12日 23:30
  • 220

STM32的位段操作基础

一.位段简介 二.STM32的存储器分布:0.5GB的程序存储区,0.5GB片上内存区,0.5GB片上外设flash区,1GB的外部RAM,1GB的外部设备flash,其它地址分配给了私...
  • tangxing1212
  • tangxing1212
  • 2015年01月19日 13:02
  • 1618

C语言之位段使用详解

什么是位段 在前面各章中, 我们已经讨论过字节概念了。在大多数的计算机系统中, 一个字节是由八个更小的, 称作为位的单位组成的。位是比字节更小的单位。位只有两个值, 1 或 0 。因此, 存...
  • u013427969
  • u013427969
  • 2016年11月03日 00:23
  • 1602

结构体-位段-联合体-枚举

什么是结构体(struct)?结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。(ps:数组是同一类型元素的集合)结构体可以被声明为变量,指针或数组等。 结构体的定义 一般形式...
  • KomaCC
  • KomaCC
  • 2018年01月09日 14:56
  • 75

结构体和位段的大小计算

在介绍结构体和位段的大小计算方法之前,先来介绍内存对齐这个概念。 为什么会有内存对齐? 首先字,双字,四字在自然边界上不需要内存对齐。无论如何,为了提高程序的性能,数据结构应该尽可能的在自然边界上...
  • qq_37954088
  • qq_37954088
  • 2017年07月09日 15:41
  • 144

STM32的位段操作

位操作就是可以读/写单独的一个比特位,在STM32中没有像51单片机的sbit来实行位定义,但是它可以通过位带别名区来实现。 在STM32中有两个地方实现了位带操作,一个是SRAM区的最低1MB空间...
  • qq_29344757
  • qq_29344757
  • 2017年06月19日 11:14
  • 672
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:位段
举报原因:
原因补充:

(最多只允许输入30个字)