美文网首页
大端与小端

大端与小端

作者: 蓝浅蓝深 | 来源:发表于2017-04-12 18:03 被阅读44次

字节顺序,又称端序尾序 ( Endianness ),是跨越多字节的程序对象的存储规则。

在几乎所有的机器上,多字节对象都被存储为连续的字节序列。
存储地址内的排列有两个通用规则,一个多位的整数将按照其存储地址的最低或最高字节排列。

  • 大端序 ( Big-Endian ),高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
  • 小端序 ( Little-Endian ),低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

举一个例子,比如数字 0x12345678 在内存中的表示形式为:

  • 大端模式:
    低地址 -----------------> 高地址
    高字节 -----------------> 低字节
    0x12 | 0x34 | 0x56 | 0x78
  • 小端模式:
    低地址 -----------------> 高地址
    低字节 -----------------> 高字节
    0x78 | 0x56 | 0x34 | 0x12

大端模式:符号位的判定固定为第一个字节,容易判断正负。
小端模式:强制转换数据不需要调整字节内容,高地址端只需补零。

在网络应用中,字节序是一个必须被考虑的因素。因为不同机器类型可能采用不同标准的字节序,均要按照网络标准进行端模式的转换。一般操作系统是小端,而通讯协议是大端的。

  • PowerPC处理器主导网络市场,可以说绝大多数的通信设备都使用PowerPC处理器进行协议处理和其他控制信息的处理,这也可能也是在网络上的绝大多数协议都采用大端编址方式的原因。因此在有关网络协议的软件设计中,使用小端方式的处理器需要在软件中处理端模式的转变。
  • Pentium主导个人机市场,因此多数用于个人机的外设都采用小端模式,包括一些在网络设备中使用的PCI总线,Flash等设备,这也要求在硬件设计中注意端模式的转换。
  • 对于有些设备,如DDR颗粒,没有以小端方式存储的寄存器,因此从逻辑上讲并不需要对端模式进行转换。只需要将双方数据总线进行一一对应的互连,而不需要进行数据总线的转换。

虽然很多时候,字节序的工作已由编译器完成了,但是在一些小的细节上,仍然需要去仔细揣摩考虑,尤其是在以太网通讯、MODBUS通讯、软件移植性方面。

相关文章

  • C: 判断大小端

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

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

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

  • 大端与小端

    字节顺序,又称端序或尾序 ( Endianness ),是跨越多字节的程序对象的存储规则。 在几乎所有的机器上,多...

  • arm体系结构中的大小端

    大端模式: 小端模式:

  • 大端小端

    由于某个问题,最近突然联想到大端小端问题,时间久远,记忆有点模糊,所以又重新翻看了一下,做个记录,内容大都来源伟大...

  • 小端 / 大端

    Little-Endian 小端:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。Big-Endia...

  • 大端小端

    大端: 小端:数据的 低 位保存在内存的低地址中,数据的 高 位保存在内存的高地址中。 上面是大小端的定义。定义总...

  • 字符串

    1, 大端小端 大端: 高位在高地址,低位在低地址 小端: 高位在低地址,低位在高地址 2, java.lang....

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

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

  • 字节序

    端模式分为小端字节序与大端字节序。 1. 小端字节序(Little Endian, LE)低字节存于内存低地址,高...

网友评论

      本文标题:大端与小端

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