大端:数据的低字节放在内存的高地址中,高字节放在内存的低地址中。
小段:数据的低字节放在内存的低地址中,高字节放在内存的高地址中。
可以用一个联合体来验证:
#include<stdio.h>
typedef union{
unsigned int num ;
char buf[4] ;
}UN;
int main(){
int ret = 0 ;
UN un ;
un.num = 0x12345678 ;
int i ;
for(i = 3 ; i >= 0 ; i --){
printf("buf[%d]: %x add:%x\n" , i , un.buf[i] , &un.buf[i]) ;
}
return ret ;
}
C语言中联合体共用一片内存空间,程序运行结果如下:
可见数组索引从0到3对应空间的地址是从低往高的,int占4个字节,内存的低地址22fe40存放了num的低字节0x78,在数组索引3对应的空间即内存的高地址22fe43放着num的最高的字节0x12,可见计算机储存数据的方式是以小端模式储存。
编了一个口诀方便记忆:
小明和小红去吃小吃 ; (小端,低位在低地址)
一个大人过来一个大脚把小明踢飞了。(大端,高位在低地址)