简单了解:在内存中的数据

内存原理

开启电源,启动BIOS,CPU工作,调用内存,内存跟硬盘索要资源
当你点击一个文件的时候数据经过数据总线传达到CPU,CPU发送指令到内存,内存那里会跟硬盘沟通,问他有没有这个东西,他说有,你就会看到这个文件夹里面是什么东西。
(Xee:RAM 是随机存取存储器,它的特点是易挥发性,即掉电失。--妈蛋,难怪一断电,我的东西没保存,就找不到了--
既然内存是用来存放当前正在使用的(即执行中)的数据和程序,那么它是怎么工作的呢?我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因。刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。)

数据在内存中始终是以二进制形式存放的。数值是以补码表示的。

整型:

一个正数的补码和其原码的形式相同。而负数的补码方式是将其绝对值的二进制形式“按位求反再加1”

实型:

在内存中占4个字节,是按照指数形式存储的,实型数据分为小数部分和指数部分,分别存放!计算机用二进制表示小数部分,用2的幂次来表示指数部分!

字符型:

在内存中字符的存储实际上是把字符相对应的ASCII代码放到存储单元中的。而这些ASCII代码值在计算机中也是以二进制形式存放的。这个与整型的存储很相似。因此这两类之间的转换也比较方便!

字符数据在内存中的存储形式及使用方法

系统在表示一个字符型数据时,并不是将字符本身的形状存入内存,而只是将字符的ASCII码存入内存。在内存中所有的数据又是以二进制的形式存放的。所以上面的例子中‘x‘和‘y‘在内存中的表示如下:

‘x‘、‘y‘的ASCII码为120、121。而120、121的二进制形式为1111000、1111001。

所以‘a‘、‘b‘在内存中的表示为 1111000、1111001。

为什么计算机内存,硬盘能存储数据,请简单描述一下

硬件技术是不断发展的,所以,只能说下基本原理:磁碟的表面有很多微小的小颗粒,能够被磁化。利用消磁和磁化原理来标识数据。
1字节,有8位二进制,一个字节能表示 255 个值(0000 0000 ~ 1111 1111 )
程序要执行,首先将文件加载到内存中。
内存的每一个区域是有内存地址的,一个内存单元为一个字节。
程序加载内存中,就会占用一部分区域,这一部分区域就是使用内存单元的范围来标识的。

内存的存储原理

内存,英文名为RAM(Random Access Memory),全称是随机存取存储器。主要的作用就是存储代码和数据供CPU在需要的时候调用。但是这些数据并不是像用木桶盛水那么简单,而是类似图书馆中用有格子的书架存放书籍一样,不但要放进去还要能够在需要的时候准确的调用出来,虽然都是书但是每本书是不同的。对于内存等存储器来说也是一样的,虽然存储的都是代表0和1的代码,但是不同的组合就是不同的数据。让我们重新回到书和书架上来。
  如果有一个书架上有10行和10列格子(每行和每列都有0~9编号),有100本书要存放在里面,那么我们使用一个行的编号和一个列的编号就能确定某一本书的位置。如果已知这本书的编号36,那么我们首先锁定第3行,然后找到第6列就能准确的找到这本书了。
  在内存中也是利用了相似的原理现在让我们回到内存上,对于它而言数据总线是用来传入数据或者传出数据的。因为存储器中的存储空间是如果前面提到的存放图书的书架一样通过一定的规则定义的,所以我们可以通过这个规则来把数据存放到存储器上相应的位置,而进行这种定位的工作就要依靠地址总线来实现了。
  对于CPU来说,内存就像是一条长长的有很多空格的“线”,每个空格都有一个唯一的地址与之相对应。如果CPU想要从内存中调用数据,它首先需要给地址总线发送地址数据定位要存取的数据,然后等待若干个时钟周期之后,数据总线就会把数据传输给CPU。当地址解码器接收到地址总线送来的地址数据之后,它会根据这个数据定位CPU想要调用的数据所在的位置,然后数据总线就会把其中的数据传送到CPU。
  CPU在一行数据中每次只是存取1个字节的数据。回到实际中,通常CPU每次需要调用64bit或者是128bit的数据(单通道内存控制器为64bit,双通道为128bit)。如果数据总线是64bit的话,CPU就会在一个时间中存取8个字节的数据,因为每次还是存取1个字节的数据,64bit总线将不会显示出来任何的优势,工作的效率将会降低很多。这也就是现在的主板和CPU都使用双通道内存控制器的原因。
时间: 2024-10-11 04:22:55

简单了解:在内存中的数据的相关文章

ffmpeg 从内存中读取数据

http://blog.csdn.net/leixiaohua1020/article/details/12980423 ffmpeg一般情况下支持打开一个本地文件,例如"C:\test.avi" 或者是一个流媒体协议的URL,例如"rtmp://222.31.64.208/vod/test.flv" 其打开文件的函数是avformat_open_input(),直接将文件路径或者流媒体URL的字符串传递给该函数就可以了. 但其是否支持从内存中读取数据呢?这个问题困

REDIS 勿删除rdb文件如何从内存中恢复数据

redis的数据是在内存中的,如果redis重启或间隔一定时间redis会把内存保存在硬盘上的一个.rdb文件中做持久化,以前刚刚开始用redis的时候,不小心把.rdb文件给误删除了,但你只要正常save或者重启redis,rdb文件会自动生成. 但随着线上业务增加,redis的数据会越来越大,在用这种方法会出现错误,不能把内存中的数据保存到rdb文件中,这时需要只要做以下几步,就可以恢复rdb文件了: 进入到redis端口,info查看配置信息 进入redis端口 执行 config set

最简单删除SQL Server中所有数据的方法

原文:最简单删除SQL Server中所有数据的方法  最简单删除SQL Server中所有数据的方法 编写人:CC阿爸 2014-3-14 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程. 也许很多读者朋友都经历过这样的事情:要在开发数据库基础上清理一个空库,但由于对数据库结构缺乏整体了解,在删除一个表的记录时,

第二十一章、使用查询表达式来查询内存中的数据

什么是语言集成查询(LINQ) 对从应用程序代码中查询数据的机制进行了“抽象”.这个功能称为“语言集成查询”(Language Integrated Query). LINQ的设计者大量借鉴了关系数据库管理系统(例如Microsoft SQL Server)的处理方式,将“数据库查询语句”与“数据在数据库中的内部格式”分隔开.LINQ的语法和语义和SQL很像,具有许多相同的优势.要查询的数据的内部结构发生改变后,不必修改查询代码.注意,虽然LINQ和SQL看起来很像,但LINQ更加灵活,而且能处

Android---35---openFileInput、openFileOutput获取手机内存中的数据

openFileOutput和openFileInput 获取手机内存中的文件而不是SD卡中的. Context提供了两个方法来打开本应用程序的数据文件夹里的文件I/O流. openFIleInput(String name):name文件对应的输入流 openFileOutput(String name,int mode):name文件对应的输出流 其中输出流中的第二个参数表示打开文件的模式,也可以称作权限: MODE_PRIVATE:该文件只能被当前程序读写 MODE_APPEND:以追加的

内存中的数据对齐

数据对齐,是指数据所在的内存地址必须是该数据长度的整数倍.DWORD数据的内存起始地址能被4除尽,WORD数据的内存起始地址能被2除尽.x86 CPU能直接访问对齐的数据,当它试图访问一个未对齐的数据时,会在内部进行一系列的调整.这些调整对于程序来说是透明的,但是会降低运行速度,所以编译器在编译程序时会尽量保证数据对齐.同样一段代码,我们来看看用VC.Dev C++和LCC这3个不同的编译器编译出来的程序的执行结果: 这是用VC编译后的执行结果: 变量在内存中的顺序:b(1字节)-a(4字节)-

Xcode如何查看内存中的数据

在  debug 模式下如何在断点处,查看字符指针变量内存中的值,像vs2008的调试工具一样的内存查看器,现在只能查看第一个内存中的值可以在输出窗口采用gdb命令:x /nfu <addr> n表示要显示的内存单元的个数 ----------------------------------------- f表示显示方式, 可取如下值:x 按十六进制格式显示变量d 按十进制格式显示变量u 按十进制格式显示无符号整型o 按八进制格式显示变量t 按二进制格式显示变量a 按十六进制格式显示变量i 指

在一段内存中查找数据

#include <stdio.h> char code[] = { 0x64,0x10,0x00,0x00,0x20,0x64,0x00,0x01,0x00,0x80, 0x01,0x90,0x08,0x07,0x20,0x64,0xa0,0x00,0x03,0x80, 0x01,0x90,0x08,0x07,0x20,0x64,0x00,0x08,0x00,0x03, 0x01,0x07,0x20,0x64,0x64,0x00,0x00,0x00,0x03,0x80, 0x01,0x90,

【POI】导出excel文件,不生成中间文件,直接将内存中的数据创建对象下载到浏览器

不是从InputStream中read,然后outputStream再write @RequestMapping("download4Excel") public void download4Excel(HttpServletResponse response){ XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("测试Sheet"); sheet.s