【个人笔记】C语言位域

【编程知识】c语言位域 一、 位域的概念 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间, 并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。 位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为: s... 阅读详情

一句话解释位域:指定结构体内变量的的位宽,从而节省空间
例子:

#include <stdio.h>
struct _test
{
    int bit1:3; // 第一个字节0 ~ 2位 
    int :0;     // 空域:表示第一个字节 3~7都为0
    int bit2:1; // 第二个字节第0位
    int :3;     // 第二个字节1~3位保留不可使用
}test,*ptest;


int main(void) {

    ptest = &test; //结构体指针
    ptest->bit1 = 1; //bit1 取值范围为:0~7 因为只有三个位
    printf("bit1=%d\n",ptest->bit1);
    printf("test占用%d字节",sizeof(test));
    return 0;
}

运行结果:

bit1=1 test
占用8字节

[C语言数据类型:位、字节、半字、字的概念与内存位宽] 在C语言中,我们可以使用关键词“_Bool”、“char”或“int”等定义位数据类型,其中“_Bool”类型占用1个字节,但实际只使用1个位来存储,即0或1,表示真或假,而“char”类型占用1个字节,但可存储8个二进制数位,因此可表示256种不同的字符。在C语言中,使用“long”、“unsigned long”或“int”等数据类型定义字,其中“int”类型在32位系统中为4个字节,在64位系统中为8个字节。通过运行程序,可以看到各个变量所占用的内存大小以及内存中的位、字节、半字和字的数量。 阅读详情

相关推荐

libero烧录信号抓取

提示:如果改了东西需要重新烧录,需要把这两个界面都关闭再libero打开。两个红色的要关闭掉。然后返回libero开始烧录,观测信号(如果只烧录观测从这一步开始就行)等到下面的messige出现以下信息表示run好了。在下图中右侧可以自己设置,设置完之后记得保存一下。run一下,耐心等待,有警告就ok,run完之后。run成功会变绿色,然后点下面的这个看波形。设置抓取信号:在libero打开。打开的就是烧录界面,直接run。

qq_34047965的博客 1420

C/C++格式化输入与输出(位宽,左右对齐,%d,%f等)总结

C/C++格式化输入与输出(位宽,左右对齐,%d,%f等)总结

Forward♞的博客 6697

vCenter Server出现no healthy upstream的解决方法

可以通过"VMware vCenter Server Management(服务)"来排查问题,在网页里面找到“服务”模块,会发现有很多服务没有启动起来,而且手动启动也无法启动。7.0 地址后,页面出现“no healthy upstream”,无法正常登录vCenter,重启后依旧如此,该故障的前提是没有对vCenter做过任何配置,如下图所示。于是用命令查询是否有证书过期,发现真有多个服务依赖的证书在当天早上过期。使用如下命令尝试打开服务发现不分服务可以打开,不分服务无法打开。

1万+

C语言结构体位域简单介绍

这几天看到一个有趣的结构体,之前没有见过,稍微了解了一下,顺便记录一下

I_learn_code的博客 599

中文实体关系抽取数据集大盘点:从百度Duie2.0到医疗CBLUE,哪个更适合你的NLP项目?

本文全面分析了中文实体关系抽取领域的主流数据集,包括百度DuIE 2.0、医疗CBLUE等,帮助开发者根据项目需求选择最适合的数据集。文章详细对比了各数据集的特点、适用场景及优化策略,为自然语言处理项目提供实用指南。

weixin_29284657的博客 121

【YOLOv8科研级优化】集成YOLOv10的SCDown采样模块,让你的模型下采样更高效更精准

打开确保模型解析器能识别SCDown模块。通过将YOLOv10的SCDown模块集成到YOLOv8中,我们实现了一个“细节保留+高效下采样”的目标检测模型。这个改进不仅在工程上能提升小目标、细粒度场景的检测效果,更在科研上提供了“分阶段下采样”的创新思路——这种思路可以延伸到其他卷积网络(如ResNet、MobileNet)的下采样层改进中,帮你在论文中打造独特的研究点。

m0_71589036的博客 136

【C语言】自定义类型-结构体(附:位段)

【C语言】自定义类型-结构体(附:位段)

XJ2536877903的博客 1097

基于通义千问2.5-7B-Instruct的技术深度解析

通义千问2.5-7B-Instruct是一个基于Transformer架构的大型语言模型,具有70亿参数。它通过自注意力机制和前馈神经网络处理输入序列,能够捕捉长距离依赖关系,适用于多种NLP任务。微调是指在预训练模型的基础上,使用特定任务的数据进行进一步训练,以使模型更好地适应特定任务。微调可以显著提高模型在特定任务上的性能。通义千问2.5-7B-Instruct是一个强大的语言模型,适用于多种NLP任务。通过深入理解其架构、微调方法和核心代码,可以更好地应用于实际场景。

zhangjiaofa的专栏 1567

【C语言深入探索】位段(Bit-field)解析

位字段是C语言中的一种特殊数据结构,允许在结构体内部定义占用特定位数的成员。这种特性使得位字段非常适合用于需要精确控制数据布局和内存占用的场景,如硬件寄存器映射、协议报文解析等。

byte轻骑兵的技术小窝 6592

Docker 环境 Playwright MCP 部署全流程指南

Docker部署Playwright MCP全流程指南 本文详细介绍了使用Docker容器化部署Playwright MCP的完整流程,涵盖镜像拉取、容器启动、配置优化和问题排查。主要内容包括: 核心部署步骤:通过官方镜像快速搭建环境,支持自定义端口和数据持久化 关键配置要点:详解网络设置、持久化目录挂载和环境变量配置 服务验证方法:通过日志检查和服务连通性测试确保部署成功 客户端集成:提供VS Code等IDE的配置示例 常见问题解决:针对浏览器启动超时、跨域限制等问题给出解决方案 实战案例:演示自动化爬

勤奋的码农 1473

使用abagen工具箱获取基于脑区的基因表达矩阵

脑区模板定义了您感兴趣的脑区的空间位置。abagen提供了一些预定义的脑区模板,您可以选择使用,也可以使用自定义的脑区模板。它提供了一种简便的方式来获取基于脑区的基因表达矩阵。abagen需要使用Allen脑图谱数据来获取基因表达矩阵。您可以使用abagen内置的下载功能来获取这些数据。这就是使用abagen工具箱获取基于脑区的基因表达矩阵的详细步骤。通过按照上述步骤操作,您可以轻松获取并使用Allen脑图谱数据中的基因表达信息。一旦您加载了脑区模板,您可以使用abagen来获取基于脑区的基因表达矩阵。

web_bug407的博客 1326

个人学习笔记 c语言的本质韦东山-14联合体-15位域

(我设置的栈 __Vectors DCD 0x20000000+0x3000)眼里,一个地址对应一个byte,8bit(int a;四个字节,四个地址)sp+0的位置bit0是sex;bit1是old,前30bit空。位域的操作效率低:先读出数据,修改之后再写进去。直接操作不是位域的变量:直接写就行了。sex在bit0,old在bit1。abc.old=0;abc.age=1;abc.old=1;pc的值指向下一个地址。下面这个是2byte。

2301_81831368的博客 401

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have “100020bf 解决方案

 本文主要介绍了checking OpenSSL library version… configure: error: OpenSSL >= 1.1.1 required (have “100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)”)解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

C语言 | 位域的使用详解

位域的概念 有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态,用0和1表示足以,也就是用一个二进位。正是基于这种考虑,C语言又提供了一种数据结构,叫做**“位域”或“位段”**。 位域是操控位的一种方法(操控位的另一种方法是使用按位运算符,按位运算符将在之后的笔记中做介绍)。 位域通过一个结构声明来建立:该结构声明为每个字段提供标签,并确...

嵌入式大杂烩 3万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C语言学习笔记-位结构体(位域)

位结构体是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构体比按位运算符更加方便,例如用在通讯协议解析时会比较方便。

qq_42732669的博客 3327

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C语言位域的定义和使用

位域的概念 有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态,用0和1表示足以,也就是用一个二进位。正是基于这种考虑,C语言又提供了一种数据结构,叫做“位域”或“位段”。 位域是操控位的一种方法(操控位的另一种方法是使用按位运算符,按位运算符将在之后的笔记中做介绍)。 位域通过一个结构声明来建立:该结构声明为每个字段提供标签,并确...

void*_的博客 2767

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

(C语言笔记)位域的详解使用(含内存对齐)

在一般学习C语言中,关于位域的知识点以及讲解一般都很少,导致我第一次接触到的时候一片迷茫,在嵌入式系统以及相关单片系统学习使用方面会比较多所以在此对位域的详解及使用做一个总结(个人理解不晦涩)

2201_75345766的博客 1832

联合体 位域结构体_【C语言笔记】位域

位域的概念有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位。正是基于这种考虑,C语言又提供了一种数据结构,叫做“位域”或“位段”。位域是操控位的一种方法(操控位的另一种方法是使用按位运算符,按位运算符将在之后的笔记中做介绍)。位域通过一个结构声明来建立:该结构声明为每个字段提供标签,...

weixin_39942108的博客 583

C语言学习笔记-位域

C语言学习笔记-位域

cuihwchn的博客 672

C语言笔记(十)共用体-位域

C语言笔记(十)共用体-位域

vizio.blog.youkuaiyun.com 1125

C/C++编程笔记:C语言结构体—位域,如何指定成员变量所占Bit?

有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。比如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位。正是基于这种考虑,C语言又提供了一种叫做位域的数据结构。 在结构体定义时,我们可以指定某个成员变量所占用的二进制位数(Bit),这就是位域。 structtest{ unsigned m; unsigned n:4; unsignedchar ch:6; } :后面的数字用来限定成员变量占用的位数。成员 m 没有限制,根据数据类型即可推

致力于C语言C++知识分享! 2106

C语言笔记-位域

  在看 位域   C语言中的位域是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,就是我们所说的变量名,允许在程序中按域名进行操作。在内存中变量排放顺序就是struct中变量名的顺序;   位域的数值类型只能为 int(整型),unsigned int(无符号整型),signed int(有符号整型) 三种类型;   位域中位的个数必须小于或等于指定类型的位宽度sizeof(T)*8。   位域的使用可以节省内存空间;   定义一个结构体MyStruct,内部有两个域:

黑山老妖的博客 553

C语言学习笔记--C位域&typedef

位域 如果程序的结构中包含多个开关量,只有TRUE/FALSE变量,如下: struct { unsigned int widthValidated; unsigned int heightValidated; } status; 这种结构需要8字节的内存空间,但实际上,在每个变量中,我们只存储0或1。在这种情况下,C语言提供了一种更好的利用内存空间的方式。如果在结构中使用这样的变量,可...

weixin_44006265的博客 791

《小菜狗 C 语言入门 + 进阶笔记》(39)你们不熟悉的‘位域‘

有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有 0 和 1 两种状态,用 1 位二进位即可。为了节省存储空间,并使处理简便,C 语言又提供了一种数据结构,称为位域。struct 位域结构名位域列表其中位域列表元素描述type只能为 int(整型),unsigned int(无符号整型),signed int(有符号整型) 三种类型。位域的名称。width位域中位的数量。宽度必须小于或等于指定类型的位宽度。带有预定义宽度的变量被称为。

小鹅系列笔记 705

C语言笔记-2 函数&位域

函数和位域学习

VengaZ的学习博客 442

【C语言学习笔记】31. 位域

C 语言提供了一种更好的利用内存空间的方式。可以定义变量的宽度来告诉编译器,您将只使用这些字节

qq_62052372的博客 197
上一篇: HDLBits_刷题_持续更新中
下一篇: 【个人笔记】union关键字的超简单理解
芯芯泡饭
博客等级 码龄7年 48粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值