本文主要是介绍c/c++/objective-c对于大端小端的判断分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大端小端和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][ ][ ]
因此整个数字变大了
这篇关于c/c++/objective-c对于大端小端的判断分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!