当前位置:网站首页 > 技术博客 > 正文

大端模式和小端模式的优缺点



在计算机中,我们知道数据是的,如果数据都是单字节存储,就不涉及存储顺序的问题。但是,大多数情况下,数据不是按照单字节的方式存储的,例如会有类似于int,double等数据类型,这就涉及到存储顺序的问题了,于是也就出现了两种存储方:。

我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。

  • 大端模式(顺序):高字节在前(高字节存放在地址的低端),低字节在后
  • 小端模式:高字节在后,低字节在前
  • 大端模式的优点:符号位的判定固定为第一个字节,。
  • 小端模式的优点:强制转换数据内容

以0x1234为例进行说明。

地址 0x4000(低地址) 0x4001(高地址) 大端存储 0x12 0x34 小端存储 0x34 0x12

下面来看看在大端模式和小端模式的存储区别,以unsigned int value = 0x进行说明,假设有unsigned char buf[4]的一个数组。

  • 大端模式

buf[3] (0x78) – 高地址,存放低位(字节)
buf[2] (0x56)
buf[1] (0x34)
buf[0] (0x12) – 低地址,存放高位(字节)


  • 小端模式

buf[3] (0x12) – 高地址,存放高位(字节)
buf[2] (0x34)
buf[1] (0x56)
buf[0] (0x78) – 低地址,存放低位(字节)


可见,大端模式和字符串的存储模式类似。

使用union类型共享内存的判断方法。联合体union的存放顺序是所有成员都从低地址开始存放

 
  

直接取int类型的高地址

 
  

在进行CAN总线通信设计或者测试过程中,经常看到CAN总线信号的编码格式有两种定义:Intel格式与Motorola格式。。

CAN总线上有4种报文:数据帧、远程帧、错误帧、超载帧。其中只有数据帧真正承载数据。假设报文中含有8各字节的数据,共。

  • 如果位编号从右至左(R2L),那么:
 
  
  • 如果位编号从左至右(L2R),那么:
 
  

这两种编号方式中,。CAN报文是串行发送的,CAN节点在发送报文时,不论如何编号,。

使用或者表示信号的衔接点。

  • Intel格式

Intel格式的信号的每位,从MSB(高字节)到LSB(低字节),按照从右至左,从上至下的顺序排列(向右上角塞)

 
  
  • Motorola格式

而Motorola格式的信号,从MSB(高字节)到LSB(低字节),按照每位从左至右,从上至下排列(向左上角塞)

 
  

从上面可以看出,Motorola格式对can报文的解析更加友好。

在这里插入图片描述
解析方法:
在这里插入图片描述
以速度为例,如果速度为,需要对speed或0xF800,因为要取反+1,,防止对要解析的数据造成影响。。


 
  

                            

版权声明


相关文章:

  • linux中user是什么意思2025-07-22 22:30:02
  • linux系统发行版本号查询2025-07-22 22:30:02
  • fastjson-1.2.53.jar2025-07-22 22:30:02
  • 内存检测工具memtest怎么看结果2025-07-22 22:30:02
  • 流量监控平台2025-07-22 22:30:02
  • mysql触发器(MySQL触发器 (通过Navicat 编辑))2025-07-22 22:30:02
  • linux m42025-07-22 22:30:02
  • python多线程技术2025-07-22 22:30:02
  • exe怎么注册2025-07-22 22:30:02
  • 全局代理有什么用2025-07-22 22:30:02