位域

简介: 位域。

位域
C 语言的位域(bit-field)是一种特殊的结构体成员,允许我们按位对成员进行定义,指定其占用的位数。

如果程序的结构中包含多个开关的变量,即变量值为 TRUE/FALSE,如下:

struct
{
unsigned int widthValidated;
unsigned int heightValidated;
} status;
这种结构需要 8 字节的内存空间,但在实际上,在每个变量中,我们只存储 0 或 1,在这种情况下,C 语言提供了一种更好的利用内存空间的方式。如果您在结构内使用这样的变量,您可以定义变量的宽度来告诉编译器,您将只使用这些字节。例如,上面的结构可以重写成:

struct
{
unsigned int widthValidated : 1;
unsigned int heightValidated : 1;
} status;
现在,上面的结构中,status 变量将占用 4 个字节的内存空间,但是只有 2 位被用来存储值。如果您用了 32 个变量,每一个变量宽度为 1 位,那么 status 结构将使用 4 个字节,但只要您再多用一个变量,如果使用了 33 个变量,那么它将分配内存的下一段来存储第 33 个变量,这个时候就开始使用 8 个字节。

目录
相关文章
|
编解码 自动驾驶 测试技术
【论文速递】PETR: 用于多视图 3D 对象检测的位置嵌入变换
【论文速递】PETR: 用于多视图 3D 对象检测的位置嵌入变换
|
前端开发 JavaScript 项目管理
飞跃前端瓶颈:技术进阶指南精华篇
飞跃前端瓶颈:技术进阶指南精华篇
219 1
|
10月前
|
传感器 分布式计算 算法
解码大数据的四个V:体积、速度、种类与真实性
解码大数据的四个V:体积、速度、种类与真实性
555 21
|
运维 监控 安全
从三个维度概述当前IT运维现状
【6月更文挑战第5天】从技术、服务和组织三个维度讨论IT运维现状。
|
存储
扫雷游戏的实现以及具体分析(保姆级教学)
扫雷游戏的分析和设计、扫雷游戏的文字描述、开始前的准备---多文件的创建、开始实操、扫雷游戏的扩展
|
前端开发
HTML+CSS实现小米账号注册界面
HTML+CSS实现小米账号注册界面
|
数据采集 缓存 搜索推荐
如何做谷歌独立站?
答案是:利用shopify或者wordpress完成谷歌独立站的建设。 建设一个独立的谷歌站点对于很多企业和个人来说,都是一个重要的项目。 有了自己的独立站,您可以全面展示自己的品牌、产品或服务,同时也能提高在Google搜索引擎中的排名和可见度。 以下是一些关键的步骤和策略,帮助您创建一个成功的谷歌独立站。
1076 0
如何做谷歌独立站?
|
Java 中间件 网络架构
分布式协调服务中间件ZooKeeper 入门(1)-ZK的介绍与特性
一、Zookeeper简介 Zookeeper是一个服务,是一个分布式协调技术,他提供高性能,分布式的协调服务。主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成“脏数据”的后果。
3334 86
|
SQL 存储 关系型数据库
MYSQL中锁的各种模式与类型
在日常开发工作中,我们几乎需要天天与数据库打交道,作为一名只会CRUD的SQL BOY,除了每天用mybatis-generator自动生成DAO层代码之外,我们几乎不用去care数据库中如何处理并发请求,但是突然某一天MYSQL数据库告警了,出现了死锁,我们的内心慌的一匹,不禁想问:这不就是个普通查询吗,咋还锁起来了? 为了避免慌乱的表情被主管捕捉到,我们需要提前了解一下数据库中到底有哪些锁。 在MySQL中,其实将锁分成了两类:锁类型(lock_type)和锁模式(lock_mode)。 锁类型描述的锁的粒度,也就是把锁具体加在什么地方;而锁模式描述的是到底加的是什么锁,是读锁还是写
MYSQL中锁的各种模式与类型
|
数据采集 安全 算法
对风险用户“从不信任”,设备指纹的防篡改指南
一定程度上,设备指纹之于人的重要意义不亚于身份证。为什么这么说?大多数人可能都有过这样的经历:刷短视频时,只要我们点赞了某个视频,那么下一次再刷视频时,系统就会推荐更多类似的视频;
494 0
对风险用户“从不信任”,设备指纹的防篡改指南