• 内存地址与内存空间


    概览

    1. 基本概念
    2. 进入误区
    3. 误区诊断
    4. 总结

    基本概念

    • 什么是位?    
    • 什么是字节?

        位表示的是二进制位,一般称为比特,即0或1,是计算机存储的最小单位;

        字节是计算机中数据处理的基本单位;

        计算机中以字节为单位存储和解 释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特。

                          1Byte=8bit

    • 地址总线?

      

      (1)CPU是通过地址总线来指定存储单元的。

      (2)地址总线决定了cpu所能访问的最大内存空间的大小。

      (3)地址总线是地址线数量之和。

    • 内存地址?

        是一种用于软件及硬件等不同层级中的数据概念,用来访问电脑主存中的数据。

            

        内存地址只是一个编号,代表一个内存空间

    • 寻址空间

        寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候需要把数据提取出来就需要知道数据存放在哪里 ,这时候就需要挨家挨户的找,这就叫做寻址,但如果地址太多超出了CPU的能力范围,CPU就无法找到数据了。 CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位 ,如32位寻址的CPU可以寻址2的32次方大小的地址也就是4G,这也是为什么32位的CPU最大能搭配4G内存的原因 ,再多的话CPU就找不到了。

    误区时刻

       前方高能,请谨慎驾驶!接下来进入“误区时刻”,什么鬼?

      

      不着急,我们慢慢往下看,跟着我的思路,落入我的陷阱!哈哈....

          

       按照上图,8位的cpu地址总线的宽度是8,即8位占1字节;16位cpu地址总线的宽度为20(cpu内部有个加法计算器,将16位宽度通过加法计算器加到20位),即16位占2字节;32位的cpu地址总线宽度为32,即32位占4字节。有没有问题???好,没有问题我们继续!

      地址总线宽度为8,可以表示多少个地址呢?2^8=256个,这么多地址那么所占内存为256 * 1(所占字节)= 256Byte;对不对?好,继续;

      地址总线宽度为20,可以表示多少地址呢?2^20=65536个,这么多地址所占内存为65536 * 2(所占字节) = 2M;  地址总线宽度为32,可以表示多少地址呢?2^32=4294967296个,这么多地址所占内存为65536 * 4(所占字节) = 16G; 

      
      有没有问题?好,我们看下官方的数据;

        Intel公司早期的CPU产品的地址总线和地址寄存器的宽度为20位,即CPU的寻址能力为2^20=1024*1024字节=1024K字节=1M字节;286的地址总线和地址寄存器的宽度为24位,CPU的寻址能力为2^24=1024*4*1024*4B=4*1024*4KB=16M;386及386以上的地址总线和地址寄存器的宽度为32位,CPU的寻址能力为2^32=4096M字节=4G字节。

      是不是要上天?16G的内存!!!

      

      哪里的问题?

      接下来,我们来找找误区。

     误区诊断

      来看看开头基本概念这里【内存地址只是一个编号,代表一个内存空间】。什么意思?

      我们这块内存空间存储的是什么?是这个编号吗?

      显然不是,而是这个编号代表这块空间,这款空间会随编号的位数改变吗?变成2个字节,4个字节?大错特错!一个内存地址所代表的永远是1个字节,内存的每一个字节都有为一个个编号,16位,32位只是这个编号的长短,不会影响内存的最小单元大小,仅仅是个编号。唯一影响的是所能表示的个数。

      所以这个16位的cpu,所有表示的地址个数是2^20 = 1048576个,一个地址所指大小1个字节 ,也就是1M;

      32位的cpu,所有表示的地址个数是2^32 = 4294967296个,一个地址所指大小1个字节 ,也就是4G;

     

    总结

      内存地址只是一个编号,代表一个内存空间;

      内存地址所执行的内存单元大小就是1字节,跟内存地址位数无关;

      内存空间大小就是寻址能力,即能访问到多少个地址

  • 相关阅读:
    ios7 苹果原生二维码扫描(和微信类似)
    ios7之后 根据UILabel的文字计算frame的方法
    [Luogu1944] 最长括号匹配
    [bzoj3916] friends
    [NOIp2006] 能量项链
    [NOIp2003] 加分二叉树
    [Luogu1353] 跑步Running
    [Luogu2214] Mooo Moo S
    [POJ2452] Sticks Problem
    [POJ2406] Power Strings
  • 原文地址:https://www.cnblogs.com/Lanht/p/10780364.html
Copyright © 2020-2023  润新知