码迷,mamicode.com
首页 > 其他好文 > 详细

CPU的大小端及如果判断

时间:2016-12-25 23:11:53      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:大数   实现   bsp   str   体系结构   lsb   联合体   nbsp   加载   

不同体系结构的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的大小端及如果判断

标签:大数   实现   bsp   str   体系结构   lsb   联合体   nbsp   加载   

原文地址:http://www.cnblogs.com/112ba/p/6220661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!