`
gqf2008
  • 浏览: 77159 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

大端与小端存储模式详解

阅读更多

端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian(这句话最为形象)。 小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。在计算机业界,Endian表示数据在存储器中的存放顺序。下文举例说明在计算机中大小端模式的区别。

如果将一个32位的整数0x12345678 存放到一个整型变量(int )中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。为简单起见,本文使用OP0表示一个32位数据的最高字节MSB(Most Significant Byte),使用OP3表示一个32位数据最低字节LSB(Least Significant Byte)。  

地址偏移

大端模式

小端模式

0x00

12(OP0)

78(OP3)

0x01

34(OP1)

56(OP2)

0x02

56(OP2)

34(OP1)

0x03

78(OP3)

12(OP0)

小端: 较高 的有效字节存放在较高 的的存储器地址,较低 的有效字节存放在较低 的存储器地址。
大端: 较高 的有效字节存放在较低 的存储器地址,较低 的有效字节存放在较高 的存储器地址。
如果将一个16位的整数0x1234 存放到一个短整型变量(short )中。这个短整型变量在内存中的存储在大小端模式由下表所示。  

地址偏移

大端模式

小端模式

0x00

12(OP0)

34(OP1)

0x01

34(OP1)

12(OP0)

由上表所知,采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将高位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存放,其孰优孰劣也没有定论。

有的处理器系统采用了小端方式进行数据存放,如Intel的奔腾。有的处理器系统采用了大端方式进行数据存放,如IBM半导体和Freescale的PowerPC处理器。不仅对于处理器,一些外设的设计中也存在着使用大端或者小端进行数据存放的选择。

因此在一个处理器系统中,有可能存在大端和小端模式同时存在的现象。这一现象为系统的软硬件设计带来了不小的麻烦,这要求系统设计工程师,必须深入理解大端和小端模式的差别。大端与小端模式的差别体现在一个处理器的寄存器,指令集,系统总线等各个层次中。

【用函数判断系统是Big Endian还是Little Endian】

//如果字节序为big-endian,返回true;
//反之为   little-endian,返回false

bool   IsBig_Endian()
{
     unsigned short  test =  0x1234 ;
    if(*( (unsigned char *) &test ) ==  0x12 )
        return  TRUE;
   else
        return  FALSE;

}//IsBig_Endian()

分享到:
评论

相关推荐

    大端(Big Endian)与小端(Little Endian)简介

    ### 大端与小端表示法详解 #### 一、引言 在计算机科学领域,数据的存储方式是一项基础而重要的技术。对于大于255(即超过一个字节)的整数,需要多个字节来进行存储。这些字节如何在内存中排列,涉及到两种主要的...

    关于C51中“大小端存储”问题的详解

    Keil C51 Compiler 4.0版本开始使用“大端存储模式”,而较早前的编译器版本中使用的是“小端存储模式”。 六、主流MCU架构关于endian的配置 不同的MCU架构有不同的大小端存储配置。了解这些配置对于开发者来说是...

    大小端判断代码解析详解

    在计算机系统中,大端模式和小端模式是指CPU对多字节数据的存储方式。大小端模式是指高位字节存在低位地址上,而小端模式是指高位字节存在高位地址上。判断大端模式和小端模式对CPU的理解和编程非常重要。 大端模式...

    MIPS的数据存储(补充阅读)1

    大端模式将高位字节存储在低地址,小端模式将高位字节存储在高地址。MIPS处理器支持大端模式和小端模式两种模式。 在MIPS处理器中,加载/存储指令必须对齐地址,否则将引起地址错误异常。例如,在MIPS处理器中,将...

    PB18051113-林成渊-第二次作业1

    本题涉及到的知识点包括 RISC-V 指令集的使用、指令编码设计的可行性分析、存储空间的计算以及数据在内存中的存储方式(大端和小端模式)。通过这些练习,我们可以理解处理器如何处理指令,以及如何在有限的指令编码...

    关于大小端、位域的一些概念详解

    相反,小端模式(Little-Endian)遵循“低字节优先”,将数值的高位字节存储在高地址,低位字节存储在低地址。例如,一个32位整数0x12345678在小端模式下,其四个字节存储顺序为0x78、0x56、0x34、0x12;而在大端...

    嵌入式Linux驱动开发详解(样章)

    处理器还可以在大端和小端两种存储格式间切换,通过特定函数可以检测当前系统使用的存储格式。 ARM微处理器有七种运行模式,包括用户模式、快速中断模式、外部中断模式、管理模式、指令终止模式、系统模式和未定义...

    BMP文件格式详解

    #### 小端与大端字节序 在BMP文件中,数据是以小端字节序存储的,这意味着低位字节存放在较低的地址位置。例如,十六进制数0x1756在内存中的存储顺序为先存储0x56再存储0x17,这种存储方式被称为小端方式(little ...

    Endianness and ARM Processors

    #### 小端序与大端序详解 在小端序系统中,例如ARM处理器采用的默认配置,数据的低位字节(即最低有效位)存储在较低的内存地址中,高位字节则存储在较高的地址。反之,在大端序系统中,数据的高位字节存储在较低的...

    ARM指令详解及使用

    字的内容在存储器中的存放通常有两种方式,即小端(little-endian)和大端(big-endian),这两种方式的不同在于最低位字节的地址是否在最高位字节的地址之前。小端方式每个字的低位字节在后,例如0x12345678小端方式...

    ARM应用系统开发详解

    - **存储器格式**:大端或小端格式,影响数据的存储顺序。 - **指令长度及数据类型**:32位ARM指令,16位Thumb指令;数据类型包括整数、浮点数等。 - **处理器模式**:用户模式、系统模式、管理模式等多种模式,每种...

    嵌入式葵花宝典

    1. **大端模式和小端模式**:在计算机系统中,数据存储的顺序有两种方式,大端模式(Big-Endian)和小端模式(Little-Endian)。大端模式是指数据的高字节存储在内存低地址处,而小端模式则是低字节存储在低地址处。...

    44B0中文数据手册S3C44B0ARM处理器工作模式

    每个字节组成了一个字,字又可以按照**小端(Little Endian)**或**大端(Big Endian)**格式存储: - **大端格式**:高字节存储在低地址,低字节存储在高地址。 - **小端格式**:低字节存储在低地址,高字节存储在高...

    深入C/C++浮点数在内存中的存储方式详解

    然而,这样的操作应当谨慎,因为不是所有平台都遵循相同的小端或大端字节顺序,而且直接操作可能会违反类型安全规则。 测试程序中展示了如何通过指针直接访问 `float` 类型变量的字节,输出了 `float` 值125.5在...

    ARM 应用系统开发详解

    ARM支持大端和小端两种存储器格式,这影响了数据的存储顺序。 #### 处理器模式 ARM处理器有用户模式、系统模式、管理模式、中断模式、快速中断模式等多种模式,每种模式对应不同的权限和功能。 #### 异常...

    20180114 单片机重点 缩印 正反双面1

    - 小端模式:与大端模式相反,低字节存储在低地址,高字节在高地址。ARM架构支持这两种存储方式。 6. **中断响应时的现场保护** 中断服务程序需要保存中断发生时的状态,包括累加器A、工作寄存器R0-R7、PSW等。...

    ELF文件格式详解(中文)

    - **EI_DATA**:数据编码方式,如小端模式或大端模式。 - **EI_VERSION**:当前ELF文件的版本。 - **EI_OSABI**:操作系统/ABI标识符。 - **EI_ABIVERSION**:ABI版本号。 - **e_type**:文件类型,例如ET_REL(重...

Global site tag (gtag.js) - Google Analytics