位运算实现高低位拆分的核心是掩码提取与移位对齐,通过按位与锁定区域、移位对齐,全程寄存器级操作,无需循环或字符串转换,效率极高。

用位运算实现高低位拆分,核心是“掩码提取 + 移位对齐”,不依赖循环或字符串转换,全程在寄存器级完成,效率极高。关键在于明确拆分粒度(字节、半字、字)和目标平台的位宽(如16位、32位、64位),再用按位与(&)锁定区域,再用移位(>> /
按字节拆分16位整数(高低字节分离)
适用于 uint16_t 类型,例如 0xABCD → 高字节 0xAB,低字节 0xCD:
- 高字节 = (x & 0xFF00) >> 8 → 掩掉低8位,再右移8位对齐到最低字节
- 低字节 = x & 0x00FF → 直接按位与掩码,无需移位
示例:x = 0x1234 → 高字节 = (0x1234 & 0xFF00) >> 8 = 0x12,低字节 = 0x1234 & 0x00FF = 0x34
按半字拆分32位整数(高低16位分离)
常用于网络字节序处理或图像像素打包(如ARGB):
- 高16位 = (x & 0xFFFF0000U) >> 16
- 低16位 = x & 0x0000FFFFU
注意:掩码后加 U 后缀防止符号扩展;无符号类型更安全,避免右移时高位补1
按字节顺序翻转32位整数(大小端转换)
本质是4个字节的重排:B0 B1 B2 B3 → B3 B2 B1 B0:
- B3 = (x & 0xFF000000U) >> 24
- B2 = (x & 0x00FF0000U) >> 8
- B1 = (x & 0x0000FF00U)
- B0 = (x & 0x000000FFU)
- 结果 = B3 | B2 | B1 | B0
一行写法(常见于嵌入式或性能敏感场景):
x = ((x&0xFF)>8) | ((x&0xFF000000)>>24);
通用掩码设计技巧
避免硬编码魔法数,用左移构造清晰掩码:
- n 位掩码:(1U
- 从第 k 位开始取 n 位:((1U
- 提取第 k 位:(x >> k) & 1
这样写可读性强,也方便适配不同位宽(如把 8 换成 16 就变成半字掩码)










