产生原因:
计算机以字节为单位,一个地址单元储存一个字节,对于处理超过一字节的处理器,存在着如何安排多个字节的问题,于是出现了大小端的储存模式。
小端模式:
数据中低字节放在内存低地址中,高字节放在内存高地址中,数据优先填充到内存低地址中。
大端模式:
数据低字节放在内存高地址中,高字节存放在内存低地址中,数据优先填充到内存高地址中。
高低字节:
如short a=1,其二进制码为0000 0000 0000 0001,其低字节为后8位:0000 0001
高字节为前八位:0000 0000。
判断字节序:
我们可以定义一个两个字节的数据,再由一个字节的变量储存其低地址数据,通过低地址数据判断就可判断字节序
short test=1;
两字节变量,二进制码0000 0000 0000 0001
char temp;
一字节变量
temp=((char*)&test)[0];
将&test强制转换为char*类型,[0]取&test低地址。
printf("%d\n",temp);
如果输出1可以确定temp的储存状况为0000 0001,即test的低地址储存0000 0001,为小端模式,反之如果输出0为大端模式。