字节序 大端字节序 小端字节序
介绍:由于计算机的存储单元是定死的,当出现存储的数据超过存储单元时,就要在用一个甚至若干个存储单元去存储数据
比如存储单元大小为1B,当这8位全1,存储范围也只能是0~255,如果要存储
65530
11111111 11111010
0xFF 0xFA
高字节 低字节
为了方便叙述:类似十进制, 58 58由两个数字 5和8进行存储,5是高位,8是低位
这样就会出现两情况(默认从做到右)是大端存储还是小端存储
数据保存在内存上的,数据存放位置顺序肯定是从低到高,也就是从低地址到高地址。
那么大端存储:低地址存放高位,高地址存放低位
其在内存存储顺序为:0xFF 0xFA
小端存储:低地址存放低位,搞地质存放高位
其在内存存储顺序为:0xFA 0xFF
总结
为什么会有大端字节序和小端字节序?
- 计算机电路处理低字节序,效率比较高,因为计算都是从低位开始的
- 人类习惯读写大端字节序,所以除了计算机内存处理,其他场合几乎都是大端字节序,比如:网络传输和文件存储。
/*
判断电脑是大端还是小端排序
*/
int main()
{
int a = 1;
if( 1== ((char *)&a)[0]){
printf("小端字节序\n");
}
else if( 0== ((char *)&a)[0]){
printf("大端字节序\n");
}
return 0;
}