1.引入
计算机的字长一直在增长,从4位开始,经过8、16、32、64位,以后可能还会有更多的位出现。现在的计算机还都是以字节(即8个bit位)作为地址编址单元。
编程语言中有许多内置的数据类型,有整型,浮点型等。每种内置类型所占用的字节数是不相同的。
大端小端就是指在一个内置数据类型中,数据的存放顺序,分为两种,即小端优势和大端优势。
2.概念
大端优势:数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中
小端优势:数据的低字节存储在低地址中,而字数据的高字节则存放在高地址中(所谓的“高高低低”)
3.C代码测试大端小端
说明:C语言内置类型int默认是分配4个字节。从输出来看高地址输出的是数据的高字节部分,所以是小端优势。
#include<stdio.h> int main() { unsigned int a=0x12345678; //16进制数 char *d=(char*)&a; printf("%x %x\n",d,*d); //输出:22ff18 78 printf("%x %x\n",d+1,*(d+1)); //输出:22ff19 56 printf("%x %x\n",d+2,*(d+2)); //输出:22ff1a 34 printf("%x %x\n",d+3,*(d+3)); //输出:22ff1b 12 return 0; }
4.图示
5.再说明
大端小端完全是设计的原因,不是因为有多个字节先写后写的问题。
字长32位、64位的机器在CPU设计时,就可以使用32或64条数据线一次读或写多个字节数据。又因为可以一次读或写多个字节数据,有的RAM设计才有了地址对齐一说。
地址对齐:http://www.cnblogs.com/xudong-bupt/archive/2013/05/13/3076024.html