CPU的大小端及如果判断

Posted 371502685

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU的大小端及如果判断相关的知识,希望对你有一定的参考价值。

不同体系结构的CPU,数据在内存中存放的排列顺序是不一样的。

存储器中对数据的存储是以字节(Byte)为基本单位的,因此,字(Word)和半字(Half-Word)在存储器中就有两种次序,分别称为:大端模式(Big Endian)小端模式(Little Endian)

大端存储模式是指字或半字的最高字节(Most Significant Bit,MSB)存放在内存的最低位字节地址上,而字数据的低字节则存放在高地址中。打个比方,有一个字为0×12345678,这个字由4个字节组成, 从高位到低位的次序为:0×12,0×34,0×56,0×78。

大端模式的次序就像是我们平时书写的次序,先写大数,后写小数。另外,大端存储次序还广泛运用在TCP/IP协议上,因此又称为网络字节次序

小端存储模式是指字或半字的最低位字节(Lowest Significant Bit,LSB)存放在内存的最低位字节地址上,而字数据的高字节则存放在高地址中。

需要注意的几点是:

(1)   数据在寄存器中都是以大端模式次序存放的。

(2)   对于内存中以小端模式存放的数据。CPU存取数成时,小端和大端之间的转换是通过硬件实现的,没有数据加载/存储的开销。

用一个联合体判断大小端:

int CheckEndian(void)
{
union check
{
int  Word;
char Half;

} Endian;

Endian.Word=1;

if(1 == Endian.Half)
return Little_Endian;
else
return Big_Endian;
}

以上是关于CPU的大小端及如果判断的主要内容,如果未能解决你的问题,请参考以下文章

如何简单的判断机器的大小端字节序

判断cpu硬件的大小端

移动端及vue相关问题

关于大小端转换整理总结(包含原始方式Qt方式)

关于大小端转换整理总结(包含原始方式Qt方式)

关于大小端转换整理总结(包含原始方式Qt方式)