位域 :

有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。位段成员必须声明为int、unsigned int或signed int类型(short char long)。

示例:

#include <stdio.h>
#include <stdint.h>
#include <string.h>struct bit {uint8_t mode:4;uint8_t submode:4;uint8_t data[12];void show(){printf("size:%d mode:%d submode:%d \n", sizeof(struct bit), mode, submode);int i = 0;for(i = 0; i < 12; i++){printf("%d ", data[i]);}putchar(10);}
};int main()
{int i = 0;char buf[13] = {};printf("Hello world\n");struct bit _mbit;_mbit.mode = 10;_mbit.submode = 4;for(i = 0; i < 12; i++){_mbit.data[i] = 1;}_mbit.show();memcpy(buf, (uint8_t *)&_mbit, sizeof(_mbit));for(int i = 0; i < 13; i++){printf("%x ", buf[i]);}putchar(10);printf("h4:%x l4:%x \n", buf[0]&0xf0, buf[0]&0x0f);return 0;
}

小端平台运行结果:

高4位为4, 低4位为a

202.结构体之位域相关推荐

  1. 结构体之位域全面分析

    结构体的定义 typedef struct TEST {... }Test,*pTest;struct TEST {... }test 这里的test是一个TEST变量.. 结构体之位域 有些信息在存 ...

  2. (转)C结构体之位域(位段)

    转载自C结构体之位域(位段) 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简 ...

  3. C结构体之位域(位段)

    C结构体之位域(位段) 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C ...

  4. 结构体之位域(位段)

    结构体之位域(位段) 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语 ...

  5. 结构体 + 联合体 + 位域 使用

    简单介绍结构体 定义结构体,一般是对有相同属性的元素或成员的归纳,比如电机的电气特性:驱动电压.驱动电流.运行速度:还有比如系统报警类:过压报警.过流报警.欠压报警 本人常用格式 typedef  s ...

  6. C语言中结构体的位域(bit-fields)

    有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可.例如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位.正是基于这种考虑,C语言又提供了一种叫做位域 ...

  7. C 语言编程 — 高级数据类型 — 结构体与位域

    目录 文章目录 目录 前文列表 结构体 定义结构体 初始化结构体变量 访问结构体成员 结构体的内存分布 将结构体作为实参传入函数 指向结构体变量的指针 位域 定义位域 使用位域结构体的成员 前文列表 ...

  8. C++工作笔记-对结构体中位域的补坑说明

    以前关于位域的连接: https://blog.csdn.net/qq78442761/article/details/80102666 对这篇博文进行补坑说明: 如下: structbs { int ...

  9. gcc中的结构体成员位域

    1=============================================== struct test { int m: 1;  //此字段使用一位 }; sizeof(struct ...

最新文章

  1. C语言的基础题目,几个c语言的基础题目
  2. 抓取网络文件的URL地址作附件发送
  3. C#委托与事件 简明
  4. Hadoop:HDFS NameNode内存全景
  5. 简明python教程txt-Python:将 list 写入一个 txt 文件四种方法
  6. 如何编写YARN应用程序
  7. 【MM模块】Taxes / Terms of Payment 税额和付款条件简介
  8. Node.js 启动调试方式
  9. python调用ping命令_在Python中调用Ping命令,批量IP的方法
  10. jquery on()方法和bind()方法的区别
  11. 内联函数 error LNK2001: unresolved external symbol
  12. IOS9 微信sdk升级指南
  13. R语言聚类算法之期望最大化聚类(Expectation Maximization Algorithm)
  14. 【人民币识别】基于matlab GUI形态学钞票面额识别与统计【含Matlab源码 906期】
  15. 龙芯2k1000-pmon(5)- pmon无法修改环境变量的问题
  16. GUI 尚学堂马士兵视频上留的作业,自己改出来的
  17. OPENCV LOMO效果
  18. 【历史上的今天】9 月 20 日:中国正式接触互联网;抖音上线;中科大成立
  19. destoon参考大全
  20. 国产积木---克尔维特(多图流量预警)

热门文章

  1. python的隐藏功能分享_【图片】分享一段功能非常简陋的python代码实现下载free种【pt吧】_百度贴吧...
  2. mysql zerofill设置方法_在MySQL中使用ZEROFILL设置自定义自动增量
  3. jquery 父元素相邻元素_Jquery中几种查找节点的方法
  4. mysql5.7空间运算_msyql5.7数据类型和运算符
  5. Python“文件操作”Excel篇(上)
  6. java int数组任何数之间间隔不能对于指定数,内付极速排序
  7. Visual Studio 安装OpenCV及问题总结
  8. 【计算机网络】物理层设备功能浅析
  9. 修改一个CGRect的值
  10. Java关键字介绍之this与super