美文网首页
大端和小端

大端和小端

作者: 测试_机器猫 | 来源:发表于2022-04-14 22:33 被阅读0次

最近和硬件通讯,需要补习这些知识

    Big-Endian和Little-Endian的定义如下:
  1. Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
  2. Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
    举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:

1)大端模式:

低地址 -----------------> 高地址
0x12 | 0x34 | 0x56 | 0x78

2)小端模式:

低地址 ------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12

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

3)下面是两个具体例子:

aa.png

16bit宽的数0x1234在Little-endian模式(以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:

| 内存地址 | 小端模式存放内容 | 大端模式存放内容 |
| 0x4000 | 0x34 | 0x12 |
| 0x4001 | 0x12 | 0x34 |

32bit宽的数0x12345678在Little-endian模式以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:

| 内存地址 | 小端模式存放内容 | 大端模式存放内容 |
| 0x4000 | 0x78 | 0x12 |
| 0x4001 | 0x56 | 0x34 |
| 0x4002 | 0x34 | 0x56 |
| 0x4003 | 0x12 | 0x78 |

** 4)大端小端没有谁优谁劣,各自优势便是对方劣势:**

小端模式 :强制转换数据不需要调整字节内容,1、2、4字节的存储方式一样。
大端模式 :符号位的判定固定为第一个字节,容易判断正负。

数组在大端小端情况下的存储:

以unsigned int value = 0x12345678为例,分别看看在两种字节序下其存储情况,我们可以用unsigned char buf[4]来表示value:
  Big-Endian: 低地址存放高位,如下:
高地址
---------------
buf[3] (0x78) -- 低位
buf[2] (0x56)
buf[1] (0x34)
buf[0] (0x12) -- 高位
---------------
低地址
Little-Endian: 低地址存放低位,如下:
高地址
---------------
buf[3] (0x12) -- 高位
buf[2] (0x34)
buf[1] (0x56)
buf[0] (0x78) -- 低位
--------------

低地址

为什么会有大小端模式之分呢?

  这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。例如一个16bit的short型x,在内存中的地址为0x0010,x的值为0x1122,那么0x11为高字节,0x22为低字节。对于大端模式,就将0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,刚好相反。我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式

相关文章

  • 字节序:大端法和小端法

    大端和小端 大端法:高位保存在低地址中。 小端法:高位存放在高地址中, 程序判断大端法还是小端法 大端和小端法对程...

  • 大端和小端

    一般计算机中内存的基本分配单位是字节(BYTE),1字节一般8bit,内存地址编号以字节大小递增。所谓大端模式,表...

  • 大端和小端

    大端:数据的高位放在低地址, 大端对齐数据(网络顺序)。这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由...

  • 大端和小端

    字节序 字节顺序,又称之为:端序 或 尾序。在计算机科学领域中指的是:电脑内存 或者在网络通讯链路中,由多个字节组...

  • 大端和小端

    大端和小端指数据在内存中存储模式,它由CPU决定 大端模式:是指将数据的低位(比如 1234 中的 34 就是低位...

  • 大端和小端

    最近和硬件通讯,需要补习这些知识 Little-Endian就是低位字节排放在内存[https://so.csdn...

  • 详解大端模式和小端模式

    详解大端模式和小端模式 嵌入式开发交流群280352802,欢迎加入! 一、大端模式和小端模式的起源 关于...

  • C: 判断大小端

    大端与小端 大端与小端指的是多字节的数值在内存中的存储形式,数值的起始存储在内存的高序地址则为大端,反之为小端: ...

  • 叁:大小端模式(Big_Little_Endian)

    1:处理器存储多字节数据时,存在大端和小端模式;2:处理器存储单字节数据时,位顺序也存在大端和小端模式;3:小端模...

  • 面试题

    什么是大端和小端? 大端模式:高位字节排放在内存的低地址端,低位字节排放在内存的高地址段。 小端模式:低位字节排放...

网友评论

      本文标题:大端和小端

      本文链接:https://www.haomeiwen.com/subject/yfbxertx.html