最近在学习网络编程,在网络编程中常会看到一个名词“网络字节序”,它其实就是指大端存储。那么何谓大端存储呢?关于大小端存储这个知识点,在2012年的时候就听老师讲过,但是后来在平时的学习工作中基本都没有遇到过,有点淡忘了。整好最近学习网络编程这一块遇到了,就重新学习了一下并在这里留下笔记,希望对读者有用。其实这是个比较简单的知识点,但是时间长了容易混淆。
再说大小端存储之前,我们首先要知道一个数据存放到计算机中是都是先存低地址,然后存高地址。知道这个大前提后那么大小端存储就比较好记了。
所谓大端存储就是先存高位数据,然后再存低位数据。这样一来的话就是将高位数据存放在低地址中,而将低位数据存放在高地址中。
那么小端存储就是相反,先存低位数据,然后再存高位数据。这样低位数据存放在低地址,高位数据存放在高地址。
下面我们以一个32位(4字节)的二进制数:“10011111000011000000100001101101”来说明。
(1)小端存储
该二进制数从右往左位数依次升高(从右到左是个、十、百、千....),假设计算机中的数是按字节存储的,那么小端存储是先存放低8位即01101101,然后存放00001000,然后存放00001100,最后存放10011111。示意图如下:
(2)大端存储
大端存储就是先存放高位。那么先存放最高8位即10011111,然后存放00001100,然后存放00001000,最后存放01101101。示意图如下:
总结来说就是:大端存储先存高位数据,小端存储先存低位数据。数据存储都是从低地址开始的。