news 2026/2/7 4:27:07

简单理解:二进制权重、LSB/MSB 与大小端序!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
简单理解:二进制权重、LSB/MSB 与大小端序!

在嵌入式开发、数据通信中,单个字节(1 Byte) 是最基础的数据单元(等于 8 个比特位,1 Byte = 8 bit),也是理解二进制权重、LSB(最低有效位)、MSB(最高有效位)的核心载体 —— 所有位级别的规则,都围绕单个字节展开!

嵌入式开发中,串口通信数据错乱、内存存储读取异常?大概率是没搞懂二进制权重、LSB/MSB、大小端序这组 “黄金三角”!三者环环相扣,一篇讲透所有核心逻辑~

一、 二进制权重:左高右低是永远的铁律

权重是二进制每一位的 “数值分量”,核心规则:从右往左,位数越高,权重越大,也就是我们常说的左高右低

以 1 字节数据0x03(二进制0000 0011)、2 字节数据0x1234(二进制0001 0010 0011 0100)为例,权重分布如下:

1 字节位序号(右 0 起始)76543210
0x03二进制值00000011
权重(2ⁿ)1286432168421
2 字节位序号(右 0 起始)1514...876...0
0x1234二进制值00...100...0
权重(2ⁿ)3276816384...25612864...1
  • 计算逻辑:第n位的权重 = 2 的n次方(2ⁿ);
  • 数值计算:0x03=1×2⁰+1×2¹=3,0x1234=4×2⁰+3×2⁴+2×2⁸+1×2¹²=4660;
  • 关键:权重规则不会因传输 / 存储方式改变,是所有操作的基础。

二、 LSB 与 MSB:单个字节的 “高低位标识”

LSB 和 MSB 是针对单个字节(或数据单元)的概念,用于标记 “权重最小 / 最大的位”:

1. LSB:最低有效位(Least Significant Bit)

  • 定义:二进制数中权重最小的位,永远在最右侧(位序号 0);
  • 举例:0x03的位 0(值 1)、0x1234低字节0x34的位 0(值 0)都是 LSB;
  • 特点:对数值影响最小,比如0x03的 LSB 从 1 改 0,数值仅从 3 变 2。

2. MSB:最高有效位(Most Significant Bit)

  • 定义:二进制数中权重最大的位,永远在最左侧(1 字节位 7、2 字节位 15);
  • 举例:0x03的位 7(值 0)、0x1234高字节0x12的位 15(值 0)都是 MSB;
  • 特点:对数值影响最大,比如0x83(10000011)的 MSB 从 1 改 0,数值从 131 变 3。

三、 大小端序:多字节数据的 “存储 / 传输顺序”

当数据超过 1 字节(如0x12340x12345678)时,就需要用大小端序定义 “字节的排列顺序”—— 这和 LSB/MSB 的 “位顺序” 是两个维度,但逻辑相通:

核心定义(以 4 字节数据0x12345678为例)

  • 高字节:权重更大的字节(0x120x340x560x78);
  • 低字节:权重更小的字节(0x78是最低字节,对应 LSB 相关字节)。
存储 / 传输模式定义内存地址分布(地址从低到高)核心逻辑
小端序(Little-Endian)低字节存低地址,高字节存高地址地址 0x00:0x78 → 0x01:0x56 → 0x02:0x34 → 0x03:0x12字节级的 “LSB 优先”:权重小的字节先存 / 先传
大端序(Big-Endian)高字节存低地址,低字节存高地址地址 0x00:0x12 → 0x01:0x34 → 0x02:0x56 → 0x03:0x78字节级的 “MSB 优先”:权重小的字节后存 / 后传

大小端序与 LSB/MSB 的关联

  • 小端序 = 字节级 LSB 优先:和单个字节的 “LSB 优先传输” 逻辑一致,都是 “权重小的先处理”;
  • 大端序 = 字节级 MSB 优先:和单个字节的 “MSB 优先传输” 逻辑一致,都是 “权重小的后处理”;
  • 绝大多数 MCU(ARM、STM32、HC32)默认小端序存储,网络协议(TCP/IP)默认大端序传输

四、 开发实战:避坑关键操作

1. 位传输顺序(LSB/MSB 优先)

用于串口、SPI 等外设的 “单个字节内的位传输”,必须双方统一:

// HC32串口配置:单个字节内 LSB优先传输(嵌入式主流选择) USARTx->MDR = USART_MODE_NORMAL | USART_LSB_FIRST;
  • 错误后果:MCU 设 LSB 优先,上位机设 MSB 优先,发送0x03会被解析为0xC0(数据错乱)。

2. 字节存储 / 传输顺序(大小端序)

  • 存储:MCU 默认小端序,读取多字节数据时无需转换,直接按地址顺序读取即可;
  • 传输:网络通信需将小端序转为大端序(用htonl()/htons()函数),避免跨设备解析错误:
// 示例:小端序MCU发送4字节数据到网络(大端序) uint32_t data = 0x12345678; // 小端存储:0x78,0x56,0x34,0x12 uint32_t net_data = htonl(data); // 转为大端序:0x12,0x34,0x56,0x78

五、 一句话总结

  • 二进制权重:左高右低是铁律;
  • LSB/MSB:单个字节的 “高低位”,LSB 在右、MSB 在左;
  • 大小端序:多字节的 “排列顺序”,小端 = 字节级 LSB 优先(MCU 默认),大端 = 字节级 MSB 优先(网络默认);
  • 核心避坑:位顺序(LSB/MSB)和字节顺序(大小端)需分别与通信方统一!

内存存储的地址增长方向是 “低地址→高地址”(默认连续递增),而小端序(MCU 主流默认)的规则是 “低字节存低地址”—— 两者结合,多字节数据的存储逻辑就是 “低地址存低字节,地址从低到高,字节权重从低到高”,完美匹配字节级的 “LSB 优先”。

用通俗的方式拆解,帮你彻底夯实逻辑:

一、两个核心前提(永远不变的基础)

  1. 内存地址方向:低→高递增内存就像一排连续的 “储物格”,每个格子对应一个字节地址,地址编号从 0 开始依次变大(0x00→0x01→0x02→...),这是硬件设计的固定规则 —— 你可以理解为 “储物格从左到右编号,左边是低地址,右边是高地址”。

  2. 字节高低判定:权重决定多字节数据中,“低字节” 是权重最小的字节,“高字节” 是权重最大的字节(和二进制位 “左高右低” 逻辑一致):示例:4 字节数据0x12345678

    • 低字节:0x78(权重最小,对应 0~7 位)
    • 高字节:0x12(权重最大,对应 24~31 位)

二、小端序的 “完美匹配”:低字节存低地址 + 地址低→高

结合两个前提,小端序的存储逻辑就像 “按权重从小到大,从左到右放字节”:假设0x12345678从低地址0x1000开始存储:

内存地址(左→右 = 低→高)0x1000(最左 = 最低地址)0x10010x10020x1003(最右 = 最高地址)
存储的字节(权重低→高)0x78(最低字节)0x560x340x12(最高字节)
  • 直观理解:左边(低地址)放 “小个子”(低字节),右边(高地址)放 “大个子”(高字节),地址顺序和字节权重顺序完全一致;
  • 硬件优势:CPU 读取数据时,先拿到低地址的低字节,直接就能开始运算(CPU 运算从低位开始),无需额外排序,效率最高。

三、反例对比:大端序的 “错位”(高字节存低地址)

如果是大端序(网络协议默认),规则是 “高字节存低地址”,和地址方向(低→高)相反:

内存地址(左→右 = 低→高)0x1000(最低地址)0x10010x10020x1003(最高地址)
存储的字节(权重高→低)0x12(最高字节)0x340x560x78(最低字节)
  • 问题:CPU 读取时,先拿到高字节,需要先缓存起来,等拿到所有字节后再重新排序(高字节放高位、低字节放低位),才能运算,效率更低。

四、工程实战:记住两个 “默认”,永远不踩坑

  1. 存储默认:MCU(ARM/STM32/HC32)默认小端序 → 低字节存低地址,地址从低→高递增;
  2. 通信默认:网络协议(TCP/IP)、部分外设默认大端序 → 高字节存低地址;
  3. 避坑关键:本地存储 / 处理不用管字节序,跨平台 / 网络通信时,用htonl()(小端→大端)、ntohl()(大端→小端)转换即可。

一句话总结

内存地址天然 “低→高”,小端序天然 “低字节存低地址”—— 两者是嵌入式存储的 “黄金搭档”,也是多字节数据不解析错误的核心保障!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/30 12:53:30

如何免费获取500+电子元器件3D模型:工程师的终极资源库

如何免费获取500电子元器件3D模型:工程师的终极资源库 【免费下载链接】电子元器件3D模型-STEP资源库 本仓库提供了一系列电子元器件的3D模型文件,格式为STEP(Standard for the Exchange of Product model data)。这些模型可用于电…

作者头像 李华
网站建设 2026/2/6 18:14:22

IMX296 CMOS图像传感器技术深度解析

IMX296 CMOS图像传感器技术深度解析 【免费下载链接】IMX296规格书分享 本资源提供了Sony IMX296图像传感器的数据手册。IMX296是一款高性能CMOS图像传感器,广泛应用于高端摄影、监控系统、医疗成像以及工业自动化等领域。此数据手册包含了传感器的关键技术参数、内…

作者头像 李华
网站建设 2026/1/29 22:37:29

Solon-AI Stdio通道快速入门:5步构建智能工具生态

Solon-AI Stdio通道快速入门:5步构建智能工具生态 【免费下载链接】solon-ai Java AI & MCP 应用开发框架(LLM,Function Call,RAG,Embedding,Reranking,Flow,MCP Server&#xf…

作者头像 李华
网站建设 2026/2/6 6:47:58

终极指南:如何快速掌握Strudel实时编码艺术

终极指南:如何快速掌握Strudel实时编码艺术 【免费下载链接】strudel Web-based environment for live coding algorithmic patterns, incorporating a faithful port of TidalCycles to JavaScript 项目地址: https://gitcode.com/gh_mirrors/st/strudel St…

作者头像 李华
网站建设 2026/2/6 19:48:28

用Markdown下划线强调关键词提升SEO排名

用 Markdown 下划线强调关键词提升 SEO 排名 在技术内容泛滥的今天,写出一篇文档已经远远不够。真正决定影响力的是——你的内容能不能被“看见”。尤其是在搜索引擎和平台推荐算法主导流量分配的当下,哪怕是最精辟的技术解析,如果无法出现在…

作者头像 李华
网站建设 2026/2/5 18:16:37

AI模型技术演进与企业选型指南:从参数竞赛到价值创造

在人工智能技术从实验室走向产业化的关键阶段,企业决策者正面临前所未有的AI模型选型困境。随着Gemini 3.0与GPT-4等主流模型的持续迭代,技术对比已从单纯的功能参数转向深度的商业价值评估。本文基于行业最新数据,从应用场景适配性、技术投资…

作者头像 李华