关于内存地址和内存空间的理解
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 M1M = 1024 KB1KB = 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个内存地址。
总结:内存地址是内存当中存储数据的一个标识,并不是数据本身,通过内存地址可以找到内存当中存储的数据。
关于内存地址和内存空间的理解相关推荐
- Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器
Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...
- java jvm内存地址_JVM--Java内存区域
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,如图: 1.程序计数器 可以看作是当前线程所执行的字节码的行号指示器,通俗的讲就是用来指示执行哪条指令的.为了线程 ...
- 排查软件关闭时访问了0xfeeefeee内存地址导致内存访问违例的崩溃
最近在使用duilib开源库实现图片查看工具软件ImageViewer,调试时发现,程序关闭时访问了0xfeeefeee内存地址,触发内存访问违例,导致了软件崩溃.本文分享一下这一问题的排查过程. 1 ...
- 王爽 汇编语言第三版 第7章 --- 更灵活的定位内存地址的方法(可以理解为 数组形式的内存定位)
汇编语言(第三版)王爽著 的十二个实验:https://blog.csdn.net/OrangeHap/article/details/89791064 大小端 字节对齐 对于 arm,intel 这 ...
- java查看内存地址_Java内存机制和内存地址
问题一: String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); / ...
- 排查软件启动时访问了0xcdcdcdcd内存地址导致内存访问违例的崩溃
VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从 ...
- 【计算机系统】 信息在计算机中的表示和内存地址与空间的简单理解
1. 信息在计算机系统中的表示 我们知道,信息在计算机系统中是以二进制的方式进行传送,存储的.那么信息在计算机系统中是如何表示的呢?在这里可分为数值信息和非数值信息两个方面进行讨论. 数据信息分类示意 ...
- 内存地址的概念和理解
1.内存地址用4位16进制和8位16进制表示的区别.例如经常可以看到某些书籍上写的内存地址0x0001,在另外一些书籍上写的内存地址又变成了0x00000001.都是表示的编号为1的内存地址,为什么一 ...
- [转]关于内存地址的个人理解和操作原理
[转]关于内存地址的个人理解和操作原理 发表于:2007年3月22日 15时55分13秒阅读(0)评论(0) 本文链接:http://user.qzone.qq.com/185591848/blog/ ...
- 关于内存地址的一些理解
首先,必须要知道内存地址只是一个编号,如1000H,代表一个内存空间.在计算机中存储器的容量是以字节为基本单位的.也就是说一个内存地址代表一个字节(8bit)的存储空间. 例如经常说32位的操作系统最 ...
最新文章
- java matchcollection_Java集合之collection
- JavaScript编码规范[百度]
- mysql 5.7 学习
- 最简单、图解:阿里云服务器上装 Docker 、 CentOS上 docker安装(3分钟装完)
- python判断字符_Python判断字符串是否为字母或者数字(浮点数)
- 双对数坐标系matlab绘图,EXCEL自动计算液塑限并绘制图表至双对数坐标系.doc
- HMI 软件内存异常,导致奔溃退出的bug
- 微信僵尸粉源码php,清除微信僵尸粉工具源码
- matlab中prismastic,锂电池干货系列之锂电和金属锂能量密度计算
- Tumblr 架构设计
- Spark:Container exited with a non-zero exit code 137
- [CodeForces] 274E Mirror Room
- TabLayout 不显示下划线
- Lucky Kat LAND — NFT 系列发售
- python开发要学哪些内容_Python开发工程师需要学习哪些内容?
- poj求排列的逆序数
- GIS 二次开发概述 (整理)
- 如何解决 vue 初始化页面闪动问题
- nopCommerce3.9简体中文语言包(nopCommerce3.9 language)
- 3D打印入门必读工具书《解析3D打印机》免费下载!
热门文章
- css实现两端对齐的方法(先借鉴别人的,后期再加入自己的理解)
- matlab两个单引号是什么意思,两个单引号什么时候用
- 洛谷:P1653 猴子(图存储、逆向思维 删边 -->加边)
- 《东周列国志》第十八回 曹沫手剑劫齐侯 桓公举火爵宁戚
- 《霍比特人2:史矛革之战》BD高清 电影 下载 [中文字幕]
- Selenium WebDriver高级应用
- 手机远程唤醒 android,手机微信实现网络唤醒电脑(WOL),远程开机,WakeOnLan – 全栈笔记...
- css media怎么用,css中@media属性如何使用
- cordova media插件
- 如何获取瘦人肠道菌群_瘦人想要长胖,调节肠道菌群很重要