大端小端,虽然是个简单的问题,通过测试确认当前环境处于什么样的状态并非很复杂。网络
可是想简单明了的记住这些概念以及明白他们的目的和相关性,还真不是一两句话能说的清楚的。测试
在这里,我但愿个人语言能通俗易懂的为你们记住这些相关知识要点提供一些帮助。内存
首先说一下, 从定义上:数据
小端, 内存低地址存储数据低位,内存高地址存储数据高位。
大端, 内存低地址存储数据高位,内存高地址存储数据低位。文件存储
是否是以为定义讲的很难理解? 为了便于理解,首先咱们的假想一下,内存存储空间是一个由下向上无限延伸的数据空间,这样咱们才能更好的理解内存低位指的是哪部分。网络上不少介绍相关内容的, 我感受他们都忽略了该如何去理解数据存储。 有的甚至在讲解内存存储的时候,都是错的,以致于讲出来的内容看后更让人摸不到头脑。语言
废话又多了点,收回来, 继续讲, 内存是由下向上延伸的存储空间, 内存地址0,自燃对应的是最最最下边,也就是内存低地址, 这样讲你们是否理解内存低地址的概念。
对应大端小端的问题, 小端, 内存低地址存储数据低位, 也就是说假如,有个数据,0x1122,在内存里怎么存储呢,相对位置0存储0x22,相对位置1存储0x11。 就是这样, 低对低,高对高。反之,大端存储一样的数据, 相对0位,存储的是0x11,相对1位置,存储的是数据0x22,大端的内存里存储方式。文件
这些不一样的方式,各有利弊,无需讨论。 利弊是针对应用目的的。 在这里, 就必须说下内存里的存储方式到文件存储之后的状态, 不少时候,为了方便整段整段的数据是从内存里的某个地址开始,一个一个字的读取而后写入磁盘里, 读取顺序自燃就是增量的,也就是从相对0位置开始,不断增长。磁盘
在这里,回想一下小端数据在内存里是怎么存储的, 没错,内存低地址存储低位。 也就是说, 先读出来的是低位, 后读出来的是高位,若是是个16位的数据,存储按照字节存储。这种方式存进硬盘里就是前面先看到数据低位后面看到数据高位。 这就是小端的由来。硬盘
相对应的,大端存储的时候,数据高位存储在内存低地址, 也就是被优先读出来, 自燃读到的是高位。0x1122 这样的数据,先跑出来的是0x11,后来才是0x22, 大端,先跑高位。大端的由来。
在说下网络数据传递,网络传输这些用的是大端模式,先传的是数据高位。而咱们经常使用的台式pc一般是x86体系,采用的是小端。这点须要注意。
但愿这样的解释能便于你们记忆。便于你们理解,不至于被绕晕。 若是我有说的不对的地方。欢迎各位看官明确指出,方便改正。也便于本身提升。