以字节为单位的大小端序以及利用位与| 位或& 的位运算使一个整数表征单一属性或多个属性

本文详细解析了字节序的概念,包括大端和小端序在内存中的排列方式,以及十六进制数在不同字节序下的表现。同时,深入介绍了如何使用位运算进行类型标注,如集中标注、原位标注等,并通过实例展示了位或位与运算的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以字节为单位的大小端序
在这里插入图片描述
在这里插入图片描述

1、每两位的十六进制数对应存储一个字节:
0x00~0xFF对应二进制数00000000~11111111
2、大小端序是指以字节为单位 在内存中的排列顺序:
十六进制整数:                                  0x12345678
对应十进制整数 :                               305419896
对应二进制整数(4字节)00010010    00110100   01010110   01111000
X86处理器小端序按字节从小端到大端排列:          01111000    01010110   00110100   00010010
逐字节对应十六进制整数:                           78          56         45         12           

3、另,使用位或 位与运算可以使一个TYPE(1字节)WORD(2字节)DWORD(4字节)的数容纳很多信息:
例如:表征类型的一个数DWORD m_nType,该类型有集中标注类型LABEL_MASS = 0x01; 原位标注类型LABEL_INPLACE = 0x02; 不清楚暂时前两者都可以是(允许同时具有前两者的类型属性)的自由类型LABEL_FREE = 0x01|0x02; 以及不可能是这两种类型之一(自然也不会是两者均可以的自由类型) LABEL_UNKNOWN = 0x00; (每个二进制位表征一种状态)
在该数确定是两种标注类型之一但尚不明晰的状态可以用 m_nType |= LABEL_MASS; m_nType |= LABEL_INPLACE; 最后如果明确了该类型是集中标注则m_nType = LABEL_MASS; 如果两种属性都是则 m_nType = LABEL_MASS | LABEL_INPLACE; 判断该类型是否是单纯的集中标注类型(位状态完全一致):m_nType == LABEL_MASS; 判断该类型是否具有集中标注属性:m_nType & LABEL_MASS ==LABEL_MASS; 判断该类型是否同时具有集中原位属性: m_nType & LABEL_MASS == LABEL_MASS && m_nType & LABEL_INPLACE == LABEL_INPLACE; 或者m_nType == LABEL_MASS | LABEL_INPLACE;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值