关于内存地址和内存空间的理解

内存地址(理解) 内存地址 内存大小 32/64位操作系统 大端小端 阅读详情

1.内存地址用4位16进制和8位16进制表示的区别。例如经常可以看到某些书籍上写的内存地址0x0001,在另外一些书籍上写的内存地址又变成了0x00000001。都是表示的编号为1的内存地址,为什么一个是4位16进制表示,另外一个又是用8位16进制表示呢?
首先,必须要知道内存地址只是一个编号,代表一个内存空间。那么这个空间是多大呢?原来在计算机中存储器的容量是以字节为基本单位的。也就是说一个内存地址代表一个字节(8bit)的存储空间。

例如经常说32位的操作系统最多支持4GB的内存空间,也就是说CPU只能寻址2的32次方(4GB),注意这里的4GB是以Byte为单位的,不是bit。也就是说有4G=41024M(Byte)=410241024Kb(Byte)=4102410241024Byte(8bit),即2的32次方个8bit单位。

所以说用4位16进制表示的内存地址和用8位16进制表示的内存地址,其实都是代表一个8bit的存储空间而已:
在这里插入图片描述
在这里插入图片描述
至于说为什么会出现一种是用4位十六进制表示内存地址,另一种用8位十六进制表示内存地址,那是根据不同的硬件环境来的。个人理解:有些CPU只能寻址16位(16根地址线),所以用4位十六进制表示地址就够用了。有些CPU只能寻址32位(32根地址线),所以用8位十六进制。

另外记住, 210 = 1024

         1G  = 1024 M

         1M  =  1024 KB

         1KB = 1024 B(Byte)

         1Byte = 8 bit

2.理解内存。

程序和数据平常存储在硬盘等存储器上,不管你开机或关机了,它们都是存在的,不会丢失。硬盘可以存储的东西很多,但其传输数据的速度较慢。所以需要运行程序或打开数据时,这些数据必须从硬盘等存储器上先传到另一种容量小但速度快得多的存储器,之后才送入CPU进行执行处理。这中间的存储器就是内存。

无论何种存储器,软盘、硬盘、光盘或者内存,都有地址。因为它们要存储数据,所以就必须按一定的单位的数据分配一个地址。有了地址,程序才能找到这些数据。这很好理解,想想你们家为什么要有门牌号即可。

学习编程,必须对内存的地址有一个透彻的理解。我们编程中的每一行代码,代码中用到的每个数据,都需要在内存上有其映射地址。当然,我们并不需要掌握内存是如何进行编址,那是计算机系中的另外一门课:操作系统的事了。

内存地址:
计算机把所有的信息都给数字化了,所以它知道自已把一个数据,一条命令记到了内存中的哪个(些)位置。
看下面的例子:
如果让计算机在内存里记住“丁小明”这个名字,可以示意为:
在这里插入图片描述
在第一行中,每一格表示一段内存,而格子里的内容是这段内容记下的数据;第二行中每一格内数字就是对应的内存的地址。
可能有人会啄磨:为什么一个“丁”字(“小”“明”两字也一样)占用两个内存地址呢?这是因为汉字在一个地址(位置)里呆不下,必须放在连续的两个地址空间内。那么,什么东西可以放在单独的一个内存地址里呢?像英文的里字母,比如’A’, 像阿拉伯数字:比如’1’,可以,而且就是放在一个内存地址里。假设有一字符串“ABC”,被记在内存里,可示意为(这次我们假设从内存地址2000H处记起):
在这里插入图片描述
现在我们提几个问题:

计算机记住”丁”字的内存地址是多少? 答案是:1000H。请见上图

我们一直在说,在计算机中,所有信息都被数字化为2进制的0、1,所以,“丁小明”这个名字被也应该是一串:0001 0010 0111 0101……,可是在中图所画出的,计算机内存里记的,仍是“丁小明”三个字啊。

下面是解释,我们只举一个字”丁”讲解。我们假设在那一串里的 0001 0010 0111 0101 对应的是 “丁” 字,那么有:
在这里插入图片描述
让我们把字母’A’对应的图也画出来:
在这里插入图片描述
在上面的两个图中:

第一行分别是“丁”和“A”,它是给人看的。

第二行则是一串的的0和1,这才是计算机内存中实际存储的数据。

第三行是内存的地址。并不是每个0和1所占的位置都被编上地址。而是每8个才拥有一个地址。

关于第三行,你可以这样理解,门牌号是一个家庭分配一个,每家每户内还有客厅卧室,这些就没有地址了。

可见:

‘丁’的确是由一串0、1组成的。更确切地,从图上可以看出‘丁’是由16位0和1组成。这16数都存放在2个内存地址里。

‘A’也一样,它是由8位0、1组成的。占1个内存地址。

总结:内存地址是内存当中存储数据的一个标识,并不是数据本身,通过内存地址可以找到内存当中存储的数据。

计算机内存地址原理详解与编程实例 计算机内存地址是计算机体系结构中的重要概念,用于定位和访问存储单元中的数据。通过理解内存地址的原理,我们可以更好地理解变量的存储和访问方式,并能够使用指针来直接操作内存中的数据。它是指计算机中存储器单元的唯一标识,用于访问和操作存储在内存中的数据。在本文中,我们将深入探讨计算机内存地址的原理,并提供一些编程实例来帮助您更好地理解。在编程中,我们经常使用变量来存储和操作数据。每个变量都有一个特定的类型和名称,并且在内存中有一个相应的存储位置。这些地址可以看作是内存中的房间号,用于定位和访问存储单元中的数据。 阅读详情

相关推荐

计算机地址:内存中数据的位置

计算机中的地址通常是以十六进制表示,例如0x0000,0x0001,0x0002等等。在计算机编程中,地址是指内存中存储数据的位置。计算机内存可以被视为一个大的字节数组,每个字节都有一个唯一的地址。需要注意的是,在操作内存地址时,我们需要小心避免出现指针错误和内存访问越界等问题。因此,在编程过程中,我们应该谨慎处理地址操作,确保代码的正确性和稳定性。通过使用指针,我们可以访问和修改内存中的数据。总结来说,计算机中的地址是指内存中数据的位置。通过使用地址,我们可以访问和操作内存中的数据。

2301_79326891的博客 834

说道“内存地址“

内存地址是计算机中用于唯一标识和访问内存中特定位置的一种数值。在计算机的内存系统中,每个存储单元都有一个唯一的地址,类似于房屋的门牌号码。内存地址通常是一个整数值,用于指示内存中的特定位置。在现代计算机系统中,内存地址通常以字节为单位进行编址,每个字节都有一个唯一的地址。例如,一个32位的计算机系统可以有2^32个不同的内存地址,每个地址对应一个字节。通过使用内存地址,计算机可以准确地定位和访问内存中的数据。当程序需要读取或写入特定的内存位置时,它可以使用该位置的内存地址来执行相应的操作。

不爱运动的跑者 3289

动态内存分配:malloc函数分配的内存空间地址是连续的吗?

总结起来,malloc函数分配的内存空间地址通常是连续的,但并不是绝对的。我们应该编写代码以处理malloc函数返回的内存地址可能不连续的情况,并且在使用完动态分配的内存后,记得使用free函数释放它们,以避免内存泄漏的问题。然而,关于malloc函数分配的内存空间地址是否连续的问题,需要进行一定的解释。然而,需要注意的是,C和C++标准并没有要求malloc函数返回的内存地址必须是连续的。这意味着,虽然在大多数情况下malloc函数返回的内存地址是连续的,但也有可能出现不连续的情况。

PixelBlade的博客 363

认识各种内存地址

—### 什么是物理地址? 物理地址就是内存单元的绝对地址,物理地址0x0000就表示内存条的第一个存储单元,0x0010(16进制)就表示内存条的第17个存储单元,一个存储单元是1byte(8bit)。 你问为什么是1byte? 一个内存条是由若干个黑色的内存颗粒构成的。每一个内存颗粒叫做一个chip。 每个chip中又叠了若干bank 在每个bank内部,就是电容的行列矩阵结构了,每一个元素有8个小电容,存储8个bit,也就是一个字节。 什么是线性地址和虚拟地址? 在80286系列以前,CPU只支

Gean的博客 1万+

Python速成指南:进阶篇

欢迎来到Python速成指南的进阶篇。如果你已经完成了基础篇的学习(Python速成指南:从零开始的编程之旅-优快云博客),并且对Python的基本概念有了扎实的理解,那么你已经为进入更深层次的Python世界做好了准备。在这个进阶篇中,我们将深入探讨Python的高级特性,并着重于如何在实际工作中应用这些知识。深入理解Python的高级特性掌握在实际项目中常用的技巧和最佳实践提高代码质量和性能了解Python在各个领域的专业应用让我们开始这段激动人心的Python进阶之旅吧!

weixin_44067082的博客 2337

【浅读论文-红外和可见光图像融合-CNN】Infrared and Visible Image Fusion using a Deep Learning Framework

1.这篇是2018年ICPR会议上发表的一篇文章1。博主个人觉得这算比较早期在VIF(红外光和可见光图像融合)中加入了深度学习这一模型的论文。2.这篇文章并不是完全使用深度学习的模型,模型主体在图像分解和融合仍然采用传统的方法,只有其中一个分支在特征提取和重建方面用到了VGG网络。3.论文地址4.代码地址本文提出了基于深度学习框架的一种新算法。本文提出使用下述论文中Image fusion with guided filtering2中的分解方法将源图像分解为基本部分和细节内容。

一枚博鼠的博客 1708

关于内存地址和内存空间的理解。

1.内存地址用4位16进制和8位16进制表示的区别。例如经常可以看到某些书籍上写的内存地址0x0001,在另外一些书籍上写的内存地址又变成了0x00000001。都是表示的编号为1的内存地址,为什么一个是4位16进制表示,另外一个又是用8位16进制表示呢? 首先,必须要知道内存地址只是一个编号,代表一个内存空间。那么这个空间是多大呢?原来在计算机中存储器的容量是以字节为基本单位的。也就是说一个内存...

weixin_30381317的博客 7371

5个企业级SOC平台横向对比:IBM QRadar vs Splunk vs 奇安信NGSOC

本文深度对比了IBM QRadar、Splunk和奇安信NGSOC等五大企业级SOC平台的核心能力,从架构设计、威胁检测、运营效率、成本模型和行业适配度五个维度进行解析。文章特别强调安全运营中心(SOC)在现代企业中的关键作用,并提供了实战数据和优化建议,帮助企业选择最适合自身需求的SOC解决方案。

a1b2c的博客 663

内存地址和内存空间的理解

1.内存地址用4位16进制和8位16进制表示的区别。例如经常可以看到某些书籍上写的内存地址0x0001,在另外一些书籍上写的内存地址又变成了0x00000001。都是表示的编号为1的内存地址,为什么一个是4位16进制表示,另外一个又是用8位16进制表示呢? 首先,必须要知道内存地址只是一个编号,代表一个内存空间。那么这个空间是多大呢?原来在计算机中存储器的容量是以字节为基本单位的。也就是说一个内...

羞羞滴小朋友 370

Benchmark系列——UnixBench测试项深度解析与性能优化指南

本文深度解析UnixBench基准测试套件的各项测试原理,包括Dhrystone、Whetstone、系统调用、进程管理、IPC及文件I/O等核心测试项。通过详细的测试项分析,指导用户解读测试报告,并提供针对性的内核参数调整、编译优化及系统配置实战指南,帮助用户精准定位并优化系统性能瓶颈。

weixin_29230901的博客 275

Tessent --- PDL

当关联的ICL模块是当前ICL顶部模块时,即当它与当前设计匹配时,只能iCall一个iTopProc。但是,可以在iTopProc内调用iCall iProc或iTopProc。为指定后续iProc命令引用的ICL模块,发出这个命令之后,随后定义的iProc都会对应的ICL模块进行定义。为后续iCall调用,当使用iCall命令调用该过程时,参数列表中的变量将被替换为iCall命令中指定的值。在调用iProc时,运行iProc内的命令。PDL是面向工程师的,工程师利用PDL语言,对ICL中的单元进行控制。

qiantianyiqian的博客 2783

关于内存地址和内存空间的理解(转)

1.内存地址用4位16进制和8位16进制表示的区别。例如经常可以看到某些书籍上写的内存地址0x0001,在另外一些书籍上写的内存地址又变成了0x00000001。都是表示的编号为1的内存地址,为什么一个是4位16进制表示,另外一个又是用8位16进制表示呢? 首先,必须要知道内存地址只是一个编号,代表一个内存空间。那么这个空间是多大呢?原来在计算机中存储器的容量是以字节为基本单位的...

dglf54292的博客 608

「极简」扣子(coze)教程 | 细节决定成败!这个小功能让用户满意度飙升,讲的太细了

这一期大师兄通过向扣子(coze)应用添加提示语的方法向用户显示系统运行的状态。

u014527622的博客 2112

研究试验3 使用内存空间

实验内容 寄存器只有十几个,但是内存空间可以很大。本实验研究C语言里时如何使用内存空间的。 寄存器和内存空间都是存储空间,要使用它们,一般要给出两个信息: a.指明是存储空间所在、是哪个的信息; b.指明存储空间有多大的类型信息。 对于内存空间,要给出地址(准确的说,是内存空间的首地址)和空间存储数据的类型。 向偏移地址为2000h、存储一个字节的内存空间写入字符‘a’: (char

Control Complexity 556

使用PyTorch和TextCNN实现英文长文本诗歌文本分类

在这个过程中,我们了解了如何进行文本数据预处理、构建TextCNN模型,并进行训练与评估。首先,我们需要将文本文件加载到内存中,并将每个诗歌作为一个样本。然后,我们需要将每个样本转换为数字表示,这可以通过将词汇表中的每个词语映射到一个唯一的整数来实现。此外,我们还需要将每个样本的长度统一为固定值,以便于模型输入。通过这个示例,我们可以学习如何构建一个简单但有效的文本分类模型,并在具体的应用场景中进行训练和预测。该模型通过使用多个不同尺寸的卷积核来捕捉文本中的不同长度的信息,并通过最大池化操作提取关键特征。

loop_syntax648的博客 254

zynq的irq_f2p 如何增加或修改中断引脚个数(宽度)

ZYNQ开发过程中,如果使用PL到PS的中断,会产生一个疑问,设置界面显示可以有[91:84]、[68:61]共16个中断引脚,但是并没有设置中断口的宽度,如果使用多个中断引脚,应该怎么办?如果通过concat连接多个引脚,则自动调整为对应的引脚数。例如连接3个中断信号,则自动调整为:IRQ_F2P[2:0]

FPGA艺术家的博客 833

内存地址中最后一位注释

内存地址中最后一位注释

weixin_40247192的博客 2945

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Python 08】变量的定义和使用

【Python 08】变量的定义和使用 1. Python中变量 2. 变量的内存分析

weixin_42322991的博客 5656

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【计算机原理】

【代码】【计算机原理】

weixin_42333261的博客 263
上一篇: Spring Boot程序 向其他API接口发送Http请求并接收返回结果
下一篇: NoSQL 还是 SQL ?这一篇讲清楚
马匠
博客等级 码龄7年 3粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值