连云港网站建设bw263/下载百度极速版
一、情境
在进行内存调试窗口的查看时,是不是会有一种错觉,就是它存的数据与我们预期的都是颠倒的,比如:
这里的a就和我们预期的不是很相同。
二、大小端
大小端是计算机厂家根据自己的习惯制定的关于数据字节序的规则。
1.大端存储
大端存储是将高位数据存放在地址的低处,低位数据反之。
2.小端存储
小端存储是将低位数据存放在地址的低处,高位数据反之。
3.图解
三、大小端的判断
1.复杂版代码如下:
#include <stdio.h>int SystemCheck()
{// 1的低位是1,高位是0int a = 1;// *pa是从低地址处开始取数据// 如果是0,那么低位放的就是0 -> 大端// 如果是1,那么低位放的就是1 -> 小端char* pa = (char*)&a;if (*pa == 0){printf("大端\n");}else{printf("小端\n");}
}int main()
{int ret = SystemCheck();return 0;
}
2.简洁版代码如下:
#include <stdio.h>int SystemCheck()
{// 1的低位是1,高位是0int a = 1;// *pa是从低地址处开始取数据// 如果是0,那么低位放的就是0 -> 大端// 如果是1,那么低位放的就是1 -> 小端return*(char*)&a;
}int main()
{int ret = SystemCheck();if (ret == 0){printf("大端\n");}else{printf("小端\n");}return 0;
}
四、总结
小端存储的口诀:小小小。
第一个小:数据的低位
第二个小:地址的低位
第三个小:小端
连起来就是数据的低位放在地址的低位是小端存储。
x86架构基本都是小端存储,以此可以检验我们的结果是不是正确的。