Big endian和Little endian模式

Big endian和Little enddian的代表就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。两者主要不同在于存放数据顺序的不同。

所谓Big endian就是从低地址到高地址存放高字节到低字节,地址第一个字节是高字节,但是Little endian恰恰相反,从低地址到高地址存放低字节到高字节,地址第一个字节是低字节。

如:int a = 0x1234abcd;如果是little endian就是低地址到高地址0xcd-0xab-0x34-0x12;而Big little相反,低地址开始0x12-0x34-0xab-0xcd。两种不同的存储方式,

那么如何判别cpu是那个类型呢?

int CheckCPU()
{
 {
  union Check
  {
   int a;
   char b;
  } c;
  c.a = 2;
  return (c.b == 2);
 }
}

这个函数,如果是Big endian就返回0;Little endian返回1;

因为联合体是共用一段内存的,先用int a =2,4字节,然后用char占用1字节,高位3字节被冲掉了(联合体新值会冲去旧值),这个时候剩下的1字节是低地址。如果是little endian就会有数字,因为little endian是低地址存低字节,高地址存高字节。但如果是big endian就没有数字,Big little是低地址存高字节,高地址存低字节,高地址的踢出意味着数字的消失。

[root@jsetc ~]# vim 1.c
[root@jsetc ~]# gcc 1.c -o 1
[root@jsetc ~]# ./1
1

结果,因为是x86平台的cpu,所以理所当然就是little endian了。








猜你喜欢

转载自blog.csdn.net/rocky_56x/article/details/79267965
今日推荐