1. 比如存储 int a = 0x1234567
Big endian : 大端模式 :内存的低位存数据的高位,内存的高地址存数据的低位。
Little endian:小端模式:内存的低地址存数据的低位,内存的高地址存数据的高位。
2. Ubuntu下测试 大小端模式
#include <stdio.h>
int main(void)
{
int a = 0x12345678;
char *p = (char *)(&a);
if (*p == 0x78)
{
printf("xiao duan!\n");
}
else if (*p == 0x12)
{
printf("da duan!\n");
}
else
{
printf("other!\n");
}
return 0;
}
result : xiao duan
3. 常见的计算机存储结构
x86结构的计算机使用的都是小端模式。一般来说,大部分用户的操作系统(如windows,FreeBSD,linux)都是小端模式。少部分,如MAC OS是大端模式。
4. 为什么有大小端模式之分?
在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型,另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。