文档章节

位域和位段

Z
 ZCedars
发布于 2018/06/30 23:03
字数 672
阅读 16
收藏 0

位域和位段

  • 解释: C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“位域”( bit field) 。利用位段能够用较少的位数存储数据。
  • 信息的存取一般以字节为单位。实际上,有时存储一个信息不必用一个或多个字节,例如,“真”或“假”用0或1表示,只需1位即可。在计算机用于过程控制、参数检测或数据通信领域时,控制信息往往只占一个字节中的一个或几个二进制位,常常在一个字节中放几个信息。
  • 位段结构体实例
      /**
      * 其中a、b 分别占2 bits、6 bits 共8 bits,即一个字节
      * 而 i 独自占 2 bytes(字节) ,即32 bits(位) (32位电脑中)
      * data 总的占 3 个字节
      */
      struct packed_data{
          unsigned a:2;
          unsigned b:6;
          int i;
      }data;
  • 段位使用
    • 位段成员的类型必须指定为unsigned或int类型。
    • 若某一位段要从另一个字开始存放,可用以下形式定义:
        struct packed_data{
        unsigned a:1;
        unsigned b:2;//一个存储单元
        unsigned :0; //使下一个位段从下一个存储单元开始存放
        unsigned c:3;//另一存储单元
        };
        /*
        * a、b、c应连续存放在一个存储单元中
        * 由于用了长度为0的位段,其作用是使下一个位段从下一个存储单元开始存放。
        * 因此,只将a、b存储在一个存储单元中,
        * c另存在下一个单元(“存储单元”可能是一个字节,也可能是2个字节,视不同的编译系统而异)。
        */
  • 一个位段必须存储在同一存储单元中,不能跨两个单元。如果第一个单元空间不能容纳下一个位段,则该空间不用,而从下一个单元起存放该位段。
  • 可以定义无名位段。
  • 位段的长度不能大于存储单元的长度,也不能定义位段数组。
  • 位段可以用整型格式符输出。
  • 位段可以在数值表达式中引用,它会被系统自动地转换成整型数。
  • 位段定义的第一个位段长度不能为0。

© 著作权归作者所有

Z
粉丝 2
博文 30
码字总数 25291
作品 0
遵义
私信 提问
根据netmask快速判断是否在一个网域

natmask就是子网掩码,与ip进行与的运算,得到一个网域。 ip 由4段构成,例 172.25.45.10 每段由8位二进制组成 即 11111111.11111111.11111111.11111111这个代表的是255.255.255.255 同理 子...

云上钢琴师
2017/04/19
0
0
STM32之CAN---配置波特率

1 位时间特性 为了掌握如何设置STM32 CAN的波特率,首先我们得先了解一下位时间特性。 位时间特性逻辑通过采样来监视串行的CAN总线,并且通过跟帧起始位的边沿进行同步,及通过跟后面的边沿进...

长平狐
2013/03/19
204
0
ASN.1编码规则(BER和PER)

在通信系统中,为了让通信双方对通信媒介中传输的信息产生一致的理解,通信双方就必须明确所交换的信息类型与格式,ASN.1便是ITU-T为支持这种要求而制定的。在目前的通信领域中,由ASN.1所描...

DayDayUpCQ
2013/07/05
3.6K
0
long mode 下的段寄存器

DS ES SS 在长模式里直接装载空选择子即可!LDS LES POP ES POP DS这些类型的指令在长模式里 被废除,装填DS ES SS 只能用mov ds,ax 、ret、iret等指令。 xor eax,eax mov ds,ax mov es,...

lgj1107
2017/08/11
25
0
C语言变量声明加冒号的用法

原文链接:博客园 C语言变量声明加冒号的用法 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可...

u011303443
2017/06/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Security 实战干货:基于注解的接口角色访问控制

1. 前言 欢迎阅读 Spring Security 实战干货 系列文章 。在上一篇 基于配置的接口角色访问控制 我们讲解了如何通过 javaConfig 的方式配置接口的角色访问控制。其实还有一种更加灵活的配置方...

码农小胖哥
12分钟前
8
0
Kafka基础——生产者

kafka生产者发送流程: kafka是通过异步的方式进行的消息发送流程,为什么是异步的? 主线程->构建ProducerRecord对象,这个对象声明了主题Topic、分区Partition、键 Key以及 值 Value,主题...

渣哇晖
13分钟前
6
0
类和对象 总结

1.public class 类名{ 属性 方法 } 2.对象 a.创建对象 类名 对象名=new 类名(); Telephone phone =new Telephone(); b.使用对象 引用对象的属性:对象名.属性 phone.sceen=5;//赋值 引用对象的...

Lao鹰
14分钟前
3
0
重试组件

系列说明 Java retry 的一步步实现机制。 https://github.com/houbb/retry 情景导入 简单的需求 产品经理:实现一个按条件,查询用户信息的服务。 小明:好的。没问题。 代码 UserService.ja...

阿提说说
20分钟前
4
0
PhotoShop 高级应用: Puppet Warp - 操控变形

一:Puppet Warp - 操控变形【人像图像进行类似肌肉骨骼的多点调整:】 1.编辑选项卡--->操控变形- 【操控变形支持智能对象】 二.操控变形实例:人物图像的运动·重影效果 1.扣取人物图像,对...

东方墨天
29分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部