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的大小端及如果判断的主要内容,如果未能解决你的问题,请参考以下文章