我们都知道在计算机中是以二进制的方式存储数据的,对于整形来说:数据存放内存中其实存放的是补码。
举个栗子:
int a = 7;
int b = 1;
这两个变量在内存中是这样存放的
数据存储顺序和我们想象的不太一样,这就是大端小端存储模式的原因。
什么叫大端
大端字节序(大端存储模式):一个数据的低位字节序放在高地址,高位字节序的内容放在低地址。
什么叫小端
小
端字节序(小端存储模式):一个数据的低位字节序放在低地址,高位字节序的内容放在高地址。
一道面试题:
设计一个小程序来判断当前机器的字节序。
int check_sys() { int a = 1; char *p = (char *)&a; if(*p == 1) return 1; else return 0; } int main() { if(check_sys() == 1) { printf("小端\n"); } else { printf("大端\n"); } system("pause"); return 0; }
或者:
//int check_sys() //{ // int a = 1; // //如果是小端返回1 // //如果是大端返回0 // return *(char *)&a; //} int check_sys() { int a = 1; char *p = (char *)&a; return *p; } int main() { if(check_sys() == 1) { printf("小端\n"); } else { printf("大端\n"); } system("pause"); return 0; }