大端小端
一、什么是大端和小端
大端(Big-Endian),是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。
小端(Little-Endian),是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中。
理解:如果把一个数看成一个字符串,比如11223344看成"11223344",末尾是个’\0’,'11’到’44’个占用一个存储单元,那么它的尾端很显然是44,前面的高还是低就表示尾端放在高地址还是低地址,它在内存中的放法非常直观,如下图:
二、如何判断机器是大端还是小端
思路:
定义int a= 1
存储方式:
0x 00 00 00 01 大端
0x 01 00 00 00 小端
判断第一个字节是否为1.是1为小端,不是为大端
代码:
#include<stdio.h>
int check_sys()
{
int a = 1;
char* p = (char*)&a;
return *p;
//返回1,小端
//返回0,大端
}
int main()
{
int ret = check_sys();
if (ret = 1)
printf("小端\n");
else
printf("大端\n");
return 0;
}
参考:链接: link.