码迷,mamicode.com
首页 > 其他好文 > 详细

把大端、小端与堆、栈的生长方向联系起来记忆

时间:2017-11-12 11:14:29      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:有一个   es2017   堆栈   问题   com   存在   小端   时间   提高   

  对于大端、小端的区别,可能看资料的时候确实理解了,但过段时间就搞混了;高位低地址、低位高地址、高位高地址、低位低地址...是不是看起来就好头大,哪个对应哪个啊。其实可以把大小端与堆栈联系起来记忆,虽然两者讲的不是一个粒度的,但大小端模式里高低位的存放与堆和栈的生长方向有一个共同点,它们都存在一个数据存放顺序的问题。

  下面结合几张图说明一下。

  假设机器为32位的,为方便表示,下文的数据都以16进制来表示。有一个数为0x12345678,在大端、小端模式下分别以下面两张图的形式存储:

技术分享                                     技术分享

  可以看出,大端是高位存储在低地址,低位存储在高地址,而小端正相反,高位存储在高地址,低位存储在低地址。仔细观察一下,其实大端更符合人类的书写方式;人手动在纸上写出来0x12345678,一般都是从左到右,先写1,再写2,依次类推,最后写8,大端也是这样,从初始的存储位置,先存入12,再存入34,最后存入78;对人类来说,小端就有点绕了,要画出其存储结构,先要计算下总共占几个字节,然后从初始地址往上数几个字节,再由上到下分别写12、34、56、78。对上面的两个图分别加个箭头可以更清楚的说明人一般的思维过程,见下面两图:

技术分享                              技术分享

也就是说,可以看成大端由下往上书写,或低地址往高地址书写;小端相反,由上往下书写,或高地址往低地址书写。到这里,是不是感觉跟栈和堆的生长方向有点相像了呢?堆和栈的生长方向见下图:

技术分享

  即栈是由上往下生长的,堆相反,由下往上生长。这个一般很好记,两个对着生长,可以提高内存的利用率。

  虽然堆和栈与大端小端不是一回事情,但可以把大端小端与堆栈联系起来记忆,大端对应堆,由下往上生长;小端对应栈,由上往下生长。下次再遇到大小端时,是不是可以很快分清哪个是哪个了?

 

 

 

 

 

把大端、小端与堆、栈的生长方向联系起来记忆

标签:有一个   es2017   堆栈   问题   com   存在   小端   时间   提高   

原文地址:http://www.cnblogs.com/chanchan/p/7820508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!