大端模式和小端模式之“终极记忆”

背景:

十进制数,最高有效位MSB在左边,最低有效位LSB在右边,即左边为大。二进制数其实也是一样的,例如1001_0110表示的十进制数就是96.那么数据是怎么存放在存储器中的呢?无非就两种存放模式:低地址存放MSB,高地址存放LSB;低地址存放LSB,高地址存放MSB。

命名:

但是这两种方式该怎么命名呢?得取个合理的计算机行业的名字才能提高理解效率,这个名称早就已经取好了,就是“低地址存放MSB,高地址存放LSB”称为大端模式,“低地址存放LSB,高地址存放MSB”称为小端模式。可是这种模式本身与它的名字有什么必然联系呢,以至于一说起名字就知道是什么存储模式,很遗憾,我记忆力差,每次遇到大端模式和小端模式我就会去查一下它们分别对应哪种存储模式,非常的浪费一个人的时间,那么有没有很奇特的方式能一下子就把名称与存储模式对应起来呢?网上查了,各种说法,有的说法变得更难记忆,有的说法相当于没说,因此我决定自己想出一种方法能永远记住这个。

记忆技巧:

低地址存放MSB,就相当于弟弟拿大的,哥哥拿小的,而这是一种美德,是一种大的美德,因此称为大端。所以以后一说起大端,就想到它是大的美德,大的美德就是小的拿到大的。

把0x1122334455这个数存放到存储器中,采用大小端方式存储就是如下方式:

大端模式和小端模式之“终极记忆”_第1张图片

大小端模式本质:

大端模式与小端模式是由硬件决定,具体是由CPU内核决定的,而不是存储器决定,更不是编译器决定的。存储器只是一种具体的存储媒介,至于怎么存它可不管,你把好吃的放在自己的房间,把不好吃的放在姐姐房间,那是你自己的选择,跟房间本身没半毛钱关系。

引申:

1、一个变量可能由若干个连续的存储单元组成,每个存储单元都有自己的地址,而变量本身也必须有自己的地址,那么哪个存储单元的地址代表这个变量的地址呢?答案是存储单元最低地址作为变量的地址。

2、大端和小端的概念不仅仅用于数据存储方面,还用于数据传输方面,传输的过程总会涉及到是先传输高有效位(MSB)后传输低有效位(LSB),还是先传输低有效位(LSB)后传输高有效位(MSB)

 

你可能感兴趣的:(数据结构)