大小端的由来
当数据类型为int,在32bit的系统中,它需要占用4个字节(32bit),这个时候就会产生这4个字节在寄存器中的存放顺序的问题。比如int x = 0x12345678。具体的该怎么存放呢?这个时候就需要理解计算机的大小端的原理了。
图解大小端
大小端主要看低地址存放的是高字节还是低字节
低地址中存储的是高字节位,为大端模式
低地址中存放的是低字节位,为小端模式
大小端存储说明
【注】不管是大端法还是小端法存储,计算机在内存中存放数据的顺序都是从低地址到高地址,所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址。
大端法和小端法指的是字节在内存中存储时的排列规则,而不是数据中的位的排列规则。也有以位序排列的机器,但很少见。另外,再次明确一下,大端法或小端法是数据在存储时的表现,而不是在寄存器中参与运算时的表现。
编写程序测试系统的大小端
#include<stdio.h> int main(void) { unsigned int x=0x12345678; unsigned char *p=(unsigned char*)&x; printf("%0x %0x %0x %0x ",p[0],p[1],p[2],p[3]); return 0; }
运行结果是:
说明Linux采用小端模式