zoukankan      html  css  js  c++  java
  • 把大端、小端与堆、栈的生长方向联系起来记忆

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

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

    作者: 蝉蝉

    请尊重作者劳动成果,转载请在标题注明“转载”字样,并标明原文链接:

    http://www.cnblogs.com/chanchan/p/7820508.html

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

                                         

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

                                  

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

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

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

     

     

     

  • 相关阅读:
    一文带你了解接口测试价值与体系
    干货|app自动化测试之设备交互API详解
    干货|app自动化测试之Appium问题分析及定位
    干货| app自动化测试之Andriod微信小程序的自动化测试
    如果你也有这些职场困惑,周六一直线上答疑
    文末福利 | 团队管理第一步之高效招聘
    精准化测试原理简介与实践探索
    文末有福利 | 面试时如何命中面试官的考题?
    Visual studio prebuild/postbuild 设置条件不生效
    使用腾讯地图api获取定位信息经纬度(需要浏览器支持,且需要https)
  • 原文地址:https://www.cnblogs.com/chanchan/p/7820508.html
Copyright © 2011-2022 走看看