大端小端和CPU有关
对于一个int型的整数0x12345678
大端
低地址 -> 高地址0x 12 34 56 78
高位 低位
小端
低地址 -> 高地址
0x 78 56 34 12
低位 高位
存放字节的顺序不同
(字节内部完全相同)
// 若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
void checkCPU()
{
{
union w
{
int a;
char b;
} c;
c.a = 1;
printf("%d", c.b == 1);
//return (c.b == 1);
}
}
大端:
==================
int
低地址 -> 高地址
0x 00 00 00 01
高位 低位
char
0x 01
不相等,一个是0x00 一个是0x01
===================小端:
==================
int
低地址 -> 高地址
0x 01 00 00 00
低位 高位
char
0x 01
相等,都是0x01
===================
对于 << 和 >> 的理解
这两个符号对应这样的存储位置:
// 高位<-低位
// >> [7][6][5][4][3][2][1][0] <<
若
n 的存储方式为 [7][6][5][4][3][2][1][0]
n << 2 移动后:
[5][4][3][2][1][0][ ][ ]
因此整个数字变大了