心胸决定格局,眼界决定境界...

大小端重新简单理解

对于同一片内存数据,用CPU用大端模式读写和小端模式的区别:

union Test{
char content[4];
int num;
};

Test test = {'W','A', 'V', 'E'};//'57', '41', '56', '45'  内存分布
printf("%d\n", test.num);//打印 0x 45 56 41 57     小端

//test[0] ->  test[1] ->  test[2] -> test[3]   地址增高 

//在大端模式中,高地址放低位字节,低地址放高位字节。
//在小端模式中,低地址放低位字节,高地址放高位字节。
//采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。

Test  test = 1;

 

//从内存(高低地址)分布映射到值(高低字节)

人的理解方式;大端  0x00 00 00 01

即 test.content[3] = 1,则为大端

 

小端机器相反:  0x01 00 00 00 

test.content[0] = 1

 

反过来说, 数字1,     从数值映射到内存分布

在大端中内存分布时   0x00 00 00 01

在小端中内存分布时   0x01 00 00 00 

首先,大小端是对字节的排放顺序,不是对位。

对数据处理时,只是进行数值运算,不牵扯到内存分布时,不所谓大小端。

 

一般:

PC上是小端。

网络是大端。

posted @ 2016-04-15 14:58  WELEN  阅读(152)  评论(0)    收藏  举报