为什么20位数据总线决定寻址空间是2^20B,即1MB,而不是2^20/2^3=2^17B????

news/2024/11/18 1:43:41/

升级版的说明

–升级了一下图片;增加了对按字节编制的默认设定的说明,免得引起误导;去掉了之前评论区有人说单位的问题。

老版链接:

http://t.csdn.cn/pYIXD

小白的疑惑

小白刚开始学习的时候很疑惑,为什么20位地址总线决定了寻址空间的大小是1MB?在这里插入图片描述

解决疑惑需要先带入的设定

为了解决这个疑惑,先听我讲一个故事,请完全带入设定:
在某个世界里,大家很喜欢养猪。
这个世界的独特之处在于,养猪的房间都是长条形的固定样式的,且一个房间只能有8个小隔间,一个隔间只能养一只猪,即,一个房间只能养八只猪
在这里插入图片描述

小k也很喜欢养猪,他有64只猪

在这里插入图片描述

但是这个世界还有一个奇葩设定,他们的语言里面,只有0和1这两个符号
所以,房间2不能叫房间2,而是要叫房间10;假设我们用只有0和1两张纸的这种记分牌来表示房间号,则要表示8个房间的话,至少需要↓如下,3个位置的纸张
在这里插入图片描述
现在我问你,小o家养养猪的房间号码刚好用三张条条能够完成编号以及小o的每个房间养满了八只猪的情况下,你能看出小o家有多少只猪吗?
在这里插入图片描述
你会回答:
3个条条,可以表示 2 3 = 8 2^{3}=8 23=8个房间,一个房间8只猪,就是8*8=64只猪

接下来:在小k的世界里面,大家都养猪,一开始的沟通是这样婶的:
在这里插入图片描述

后来养猪多了以后,是这样婶的
在这里插入图片描述

终极进化,是这样的
在这里插入图片描述

在上面的沟通中,默认一个房间养满8只猪

现在看一下猪猪例子与计算机的对应

相关知识:
现在计算机的存储空间一般都是按照字节编址,最早的时候其实不是,只是后来发现按字节编址比较好,就变成一种默认的定律了(例如ascii码里面一个字符是用8位二进制数来表示,所以我一个房间装8只猪,即计算机按1B=8bit来编址,那我每次都同时把一个房间里面的8只猪取出来,然后看这8只猪身上连起来代表了什么意思)

总结

官话:20位地址总线决定了寻址空间的大小是1MB
猪猪世界话:20张条条可以表示多少只猪?
2 20 个房间 × 一个房间 8 只猪 = 2 20 × 8 b i t = 2 20 B 2^{20}个房间\times一个房间8只猪=2^{20}\times8 bit=2^{20}B 220个房间×一个房间8只猪=220×8bit=220B
翻译:
20位地址总线→20张条条可以用来表示房间号
寻址空间的大小→20张条条能表示的房间都养满猪后的猪的只数。就是有几只猪。
一个隔间的猪=1bit
一个房间8只猪=1B=8bit

注意事项

有意见可以友善提出,虽然我也是杠精,但是这里主要是为了简单快速入门理解这个问题,不要杠一些过于细节的东西,可以补充设定之类的


http://www.ppmy.cn/news/1049946.html

相关文章

软件开发bug问题跟踪与管理

一、Redmine 项目管理和缺陷跟踪工具 官网:https://www.redmine.org/ Redmine 是一个开源的、基于 Web 的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示,同时它又支持多项目管理。Redmine 是一个自由开源软件解决方案,…

maven打出jar中动态替换占位符

使用场景&#xff1a; maven打出的jar中pom.xml动态替换占位符 有些时候某些公共工具jar包被项目引用后发现公共jar的pom.xml中的version依然还是占位符&#xff0c;例如下面 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok<…

Unity Android 之 使用 HanLP 进行句子段落的分词处理(包括词的属性处理)的简单整理

Unity Android 之 使用 HanLP 进行句子段落的分词处理&#xff08;包括词的属性处理&#xff09;的简单整理 目录 Unity Android 之 使用 HanLP 进行句子段落的分词处理&#xff08;包括词的属性处理&#xff09;的简单整理 一、简单介绍 二、实现原理 三、注意事项 四、效…

OpenCV 中的色彩空间 (C++ / Python)

在本教程中,我们将了解计算机视觉中使用的流行色彩空间,并将其用于基于颜色的分割。我们还将分享 C++ 和 Python 的演示代码。

ssh框架原理及流程

1.hibernate工作原理&#xff1a; 读取并解析配置文件读取并解析映射信息&#xff0c;创建sessionFactory打开session创建事务transaction持久化操作提交事务关闭session关闭sessionFactory 为什么使用&#xff1a; 对JDBC访问数据库的代码做了封装&#xff0c;大大简化了数据…

Linux命令(69)之gunzip

linux命令之gunzip 1.gunzip介绍 linux命令gunzip使用来解压缩使用gzip命令压缩的且后缀为".gz"的文件。我们知道gunzip是gzip的硬链接&#xff0c;因此执行gunzip是通过gzip命令来完成的 2.gunzip用法 gunzip [参数] filename.gz gunzip常用参数 参数说明-d解压…

Docker私有仓库创建

1.Docker私有仓库搭建 拉取私有仓库镜像并启动私有仓库容器。 访问私有仓库容器&#xff0c;表明私有仓库搭建成功。 此时私有仓库就已经搭建完成了。 2.将本机的镜像传到私有仓库 3.将私有仓库镜像拉取到本地

递归和迭代介绍及常见示例(C++、Python实现)

递归和迭代介绍及常见示例&#xff08;C、Python实现&#xff09; 递归的核心思想确实可以被概括为“分而治之”。递归通常在问题具有明显的自相似性&#xff0c;并且可以被有效地分解为较小的子问题时最为有效。如果一个问题不能被有效地分解&#xff0c;或者子问题之间有大量…