计算机数据存储模型

数据存储模型

当今社会,计算机无处不在,我们知道在计算机CPU用来计算数据,内存和Flash用来存储数据。计算机中的数据是现实社会中的内容在计算机中以另外一种方式来存储。我们的图片、文字、视频等资料都可以保存到计算机中。那么计算机又是如何保存这些数据的呢?在计算机中的这些数据到底是以什么方式存在?本节课将会为大家解答这些疑问,让大家从底层理解什么是计算机中的数据。

计算机电路模型

当我们拆开计算机,可以看到里面是一块电路板,上面有各种各位的元器件,有很多绕老绕去的线路,看起来很复杂。所有的计算都需要电源。我们可以抽象地理解为一个计算机就是一块人类按照一定规则制造的板子,上面有各种各样的元件,当有电源进入板子的时候,各种元件可以对电源进行有规则的引导,使得板子的各个位置有不同的电压和电流。

电压就是数据

从上面说的计算机电路模型,我们可以知道计算机中的硬件是固定,里面可变的东西是电压和电流。而计算机中的数据就是以电压的方式来表示的。比如:1V电压代表1,2V电压代表2,3V电压代表3。那么,结合之前讲到的加法器,两个输入分别为1和2,输出结果应该是3。实际上,在计算机中是两个输入分别为1V和2V电压,输出一个3V的电压。

二进制数据

在计算机中所有的数据都是用电压来表示的,不同的电压可以表示不同的数据,一个数据可以由多个电压组合来表示。然而,当数据量很大的时候,用上面的电压表示法,则电压值的需要很细分为不同的数值,在电路中要稳定的产生很多电压是很难的。如果把电压分为两种

  • 一种是高电平(高电压),用1代表高电平
  • 一种是低电平(低电压),用0代表低电平

把所有的数据用0和1的组合来表示,比如数字0是 0000 0000,数字1是 0000 0001。一张图片可能由几百万个0和1的组合来表示。所有的文字、图片、音乐、视频、文档等数据都用0和1的组合来表示。在电路中,只有高电平和低电平的区分,比如把0V~1V表示低电平,3V~6V表示高电平,这样就算电压值有一定的波动,数据也不会丢失。这种0和1的组合,称为二进制数据。

二进制数的运算

我们生活中的算术运算都是使用十进制来计算的,也就是逢十进一,比如:1 + 9 = 10。而二进制的运算则是逢二进一,比如:1 + 1 = 10。各进制数据之间的转换可以查看[进制转换][1],电脑上的计算器工具也可以帮我们进行不同进制数据的转换。

为什么用二进制

计算机内部之所以采用二进制,其主要原因是二进制具有以下优点:

  1. 技术上容易实现。用双稳态电路表示二进制数字0和1是很容易的事情。
    计算机使用二进制进行编码,而不是我们熟悉的十进制,最重要的原因是二进制物理上更容易实现。因为电子器件大多具有两种稳定状态。比如晶体管的导通和截止,电压的高和低,磁性的有和无等。而找到一个具有十个稳定状态的电子器件是很困难的。使用二进制还有运算简单的优点。十进制有55种求和与求积的运算规则,二进制仅有各有3种,这样可以简化运算器等物理器件的设计。另外,计算机的部件状态少,可以增强整个系统的稳定性。所以,二进制对于计算机来讲,是自然而然的选择。
  2. 可靠性高。二进制中只使用0和1两个数字,传输和处理时不易出错,因而可以保障计算机具有很高的可靠性。
  3. 运算规则简单。与十进制数相比,二进制数的运算规则要简单得多,这不仅可以使运算器的结构得到简化,而且有利于提高运算速度。
  4. 与逻辑量相吻合。二进制数0和1正好与逻辑量“真”和“假”相对应,因此用二进制数表示二值逻辑显得十分自然。
  5. 二进制数与十进制数之间的转换相当容易。人们使用计算机时可以仍然使用自己所习惯的十进制数,而计算机将其自动转换成二进制数存储和处理,输出处理结果时又将二进制数自动转换成十进制数,这给工作带来极大的方便。

原文地址:http://blog.51cto.com/12310156/2153558

时间: 2024-09-29 15:35:03

计算机数据存储模型的相关文章

Bitcask存储模型

----<大规模分布式存储系统:原理解析与架构实战>读书笔记 近期一直在分析OceanBase的源代码,恰巧碰到了OceanBase的核心开发人员的新作<大规模分布式存储系统:原理解析与架构实战>.看完样章后决定入手,果然物有所值. 对于准备学习分布式的同学,这是一本不错的书籍,相对系统,全面的介绍了分布式的相关技术和项目,基本都是干货. 另一半是在介绍OceanBase的内容,对我来说,正是踏破铁鞋无觅处.接下来会有几篇专门研究存储引擎的读书笔记哟.废话不多说,转入正题. 1.存

Bitcask 存储模型的实现 - merge与hint文件

在<Bitcask存储模型的实现 - 基本框架>中,我们了解了Bitcask存储模型中数据的存储方式.内存索引的组织形式,以及如何使用缓存加速数据读取.另外,Bitcask存储模型中提出闲时进行merge减少数据冗余.运用hint文件加速创建内存索引,下面我们来看merge的具体实现.如何用hint文件加速索引创建. merge Bitcask是日志型存储模型,对于新增和更改的操作,都Append到磁盘,磁盘使用率将随着操作的增多而增长. 以上图例表示,key及对应val最开始存放在25.w,

剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作

剖析Elasticsearch集群系列涵盖了当今最流行的分布式搜索引擎Elasticsearch的底层架构和原型实例. 本文是这个系列的第一篇,在本文中,我们将讨论的Elasticsearch的底层存储模型及CRUD(创建.读取.更新和删除)操作的工作原理. Elasticsearch是当今最流行的分布式搜索引擎,GitHub. SalesforceIQ.Netflix等公司将其用于全文检索和分析应用.在Insight,我们用到了Elasticsearch的诸多不同功能,比如: 全文检索 比如找

C语言存储模型

描述方法(三个方面) 作用域 代码块.函数原型 文件作用域 链接类型 外部链接 内部链接 空链接 存储时期 静态存储时期 动态存储时期 变量类型 变量存储类型 作用域 链接类型 存储时期 C语言存储模型(类) 文件 外部 静态 具有外部链接的静态 内部(static) 具有内部链接的静态 代码块 无链接 静态(static) 空链接静态变量 动态 自动变量 寄存器(性质与自动变量类似,存储在寄存器中) 寄存器 注: 具有外部链接的在其他文件使用前必须以exturn声明 具有静态存储期的变量必须使

LSM树存储模型

----<大规模分布式存储系统:原理解析与架构实战>读书笔记 之前研究了Bitcask存储模型,今天来看看LSM存储模型,两者虽然同属于基于键值的日志型存储模型.但是Bitcask使用哈希表建立索引,而LSM使用跳跃表建立索引.这一差别导致了两个存储系统的构造出现明显的分化.为此,我还先去捣腾了一番跳跃表的实现.今天算是进入了正题. LSM的结构 LSM的基本思想是将修改的数据保存在内存,达到一定数量后在将修改的数据批量写入磁盘,在写入的过程中与之前已经存在的数据做合并.同B树存储模型一样,L

多核程序设计——存储模型

最近在看<现代体系结构上的UNIX系统--内核程序员的SMP和Caching技术>,这里抄点东西作为笔记吧! 顺序存储模型强制存储器操作(load和store)都按照程序次序来执行,即这些指令是按照在随程序执行的指令流中出现的顺序次序来执行的.它也指定了,由不同处理器完成的load和store操作也要以某种顺序.但又是非确定性的方式排序.这种存储模型应该是大家最容易理解的,甚至都认为实际MP也是这样工作的.但是,这种存储结构是非常落后的,现代处理器应该已经淘汰了这种结构. 书中讲到了一个例子,

Bitcask 存储模型

Bitcask 存储模型 Bitcask 是一个日志型.基于hash表结构的key-value存储模型,以Bitcask为存储模型的K-V系统有 Riak和 beansdb新版本. 日志型数据存储 何谓日志型?就是append only,所有写操作只追加而不修改老的数据,就像我们的各种服务器日志一样.在Bitcask模型中,数据文件以日志型只增不减的写入文件,而文件有一定的大小限制,当文件大小增加到相应的限制时,就会产生一个新的文件,老的文件将只读不写.在任意时间点,只有一个文件是可写的,在Bi

教你构建iSCSI服务器实现SAN存储模型

iSCSI(Internet Small Computer System Interface)Internet 小型计算机系统接口,是一种基于 TCP/IP的协议,用来建立和管理 IP 存储设备.主机和客户机等之间的相互连接,并创建存储区域网络(SAN).SAN 使得 SCSI 协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行. SCSI 结构基于客户/服务器模式,其通常应用环境是:设备互相靠近,并且这些设备由 SCSI 总线连接.iSC

智能合约从入门到精通:Solidity语法之内存变量的布局和状态变量的存储模型

简介:在前面我们已经讲过Solidity语言的一些语法内容,在矩阵元JUICE开放平台的JIDE开发时,一定要注意Layout in Memory和Layout of State Variables in Storage,即内存变量的布局和状态变量的存储模型.内存变量的布局(Layout in Memory) Solidity预留了3个32字节大小的槽位: 0-64:哈希方法的暂存空间(scratch space) 64-96:当前已分配内存大小(也称空闲内存指针(free memory poi