【c/c++】内存地址与内存空间

在这里插入图片描述
i 的值是 0x00000001,为什么显示效果为 01 00 00 00 呢,这个是因为英特尔的 CPU 为小端存储,所以低位在前,高位在后

一、基本概念

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

  • 什么是字节?
    字节是计算机中数据处理的基本单位;
    计算机中以字节为单位存储和解 释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特。1Byte=8bit

  • c地址总线?
    在这里插入图片描述
      (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字节,跟内存地址位数无关;
内存空间大小就是寻址能力,即能访问到多少个地址

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值