大端存储小端存储
A. 彻底弄懂什么是大小端
表示数据在存储器中的存放顺序
小端模式:数据的高字节,存放在高地址中。计算机读取数据的方向,是从高地址颂尺开始读取的;
大端模式:数据的高字节,存放在低地址中。计算机读取数据的方向,是从低地址开始读取的;
记忆口诀:“小端低低”
iOS都是小端模式。
列1:
要存放的数据:0x12345678
低字节为:0x12
高字节为:0x78
小端模式计算机读取数据方向:<---
大端模式计算机读取数据方向:--->
小端模式:
内存中存放顺序:0x12,0x34,0x56,0x78
读取数据方向:从高地址开简樱迅始读取数据
读取结果:0x78,0x56,0x34,0x12
大端模式:
内存中排存放序:0x78,0x56,0x34,0x12
读取数据方向:从低地址开始读取数据
读取结果:0x78,0x56,0x34,0x12
列2:
要存放的数据:0x00000004
低字节为:0x04
高字节为:0x00
小端模式:
内存中存放顺序:0x04,0x00,0x00,0x00
读取数据方向:从高地址开始读取数据
读取结果:0x00000004
大端模式:
内存中排存放序:0x00,0x00,0x00,0x04
读取数据方向:从低地址开始读取数据
读取结果:0x00000004
由于各硬件商,按自己的构想设计硬件,导致了硬件设计不同,工作原理也有差异。所以有的硬件采用了大端模式,有的硬件采用了小端模拦此式。都认为各自采用的模式是更优秀;
B. 大小端存储
在计算机系统中,存储是以字节为单位的,每个地址单元都对应着一个字节,一个字节=8bit。在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器)。对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,如何安排多个字节的存储,这就有了大端存储模式和小端存储模式。
小端:较高的有效字节存放在较高的的存储器地址,较低的有效字节存放在较低的存储器地址。
大端:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。
如果将一个16位的整数0x1234存放到一个短整型变量(short)中。这个短整型变量在内存中的存储在大小端模式由下表所示。
C语言判断大小端模式
方法一:
voidIsBigEndian()
{
shortinta=0x1122; //十六进制,一个数值占4位charb = *(char*)&a;//通过将short(2字节)强制类型转换成char单字节,b指向a的起始字节(低字节)
if( b ==0x11) //低字节存的是数据的高字节数据
{
//是大端模式
}
else
{
//是小端模式
}
}
方法二:
voidIsBigEndian() //原理:联合体union的存放顺序是所有成员都从低地址开始存放,而且所有成员共享存储空间
{
uniontemp
{
shortint a;
char b;
}temp;
temp.a=0x1234;
if(temp.b==0x12) //低字节存的是数据的高字节数据
{
//是大端模式
}
else
{
//是小端模式
}
}
参考:https://www.jianshu.com/p/152268b0ea19
C. 大端存储和小端存储哪个与人阅读有关
大端存储。
1、大端存举衡搏帆储方式和阅读习惯相同,可以直接读作正银做12345678。
2、而小端,则与逻辑习惯相同,因为小端存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和逻辑方法一致。
D. 简述大端存储法和小端存储法,并说明信息存储器对嵌入式设计的影响
摘要 你好,大端排序的好处是接收数据的程序可以优先得到数据的最高位,以便快速反应。