文档章节

计算机存储单位以及内存原理

Oscarfff
 Oscarfff
发布于 2015/06/14 19:28
字数 1410
阅读 35
收藏 0

计算机的存储单位:
计算机系统数据只用0和1这种表现形式,(这里只表示一个数据点,不是数字),一个0或者1占一个“位”,而系统中规定8个位为一个字节。

电脑的各种存储器的最小的存储单位是比特,也就是位(bit,简称b),它表示一个二进制位。比位大的单位是字节(byte,简称B),它等于8个二进制位。

因为在存储器中含有大量的存储单元,每个存储单元可以存放8个二进制位,所以存储器的容量是以字节为基本单位的。

每个英文字母要占一个字节,一个汉字要占两个字节。

其它常用的单位还有千字节(Kilobyte,简称K或者KB,1KB等于1024B)、兆字节(Megabyte,简称M或者MB,1MB等于1024KB)和吉字节(Gigabyte,简称G或者GB,1GB等于1024MB)。

说道字节肯定要提到字符,那么这两者之间又是怎么回事呢?

字符: 
人们使用的记号,抽象意义上的一个符号。如 '1', '中', 'a', '$', '¥', ……

字节:
计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间。如 0x01, 0x45, 0xFA, ……

区别:通过编码,具体把某一个字符编码成了哪几个字节,我们只需要知道“编码”的概念就是把“字符”转化成“字节”。也就是说,字符是通过字节来实现的。

 

内存:
程序和数据平常存储在硬盘等存储器上,不管你开机或关机了,它们都是存在的,不会丢失。硬盘可以存储的东西很多,但其传输数据的速度较慢。所以需要运行程序或打开数据时,这些数据必须从硬盘等存储器上先传到另一种容量小但速度快得多的存储器,之后才送入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个内存地址。

 

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


本文转载自:http://wwty.iteye.com/blog/401713

共有 人打赏支持
Oscarfff
粉丝 72
博文 815
码字总数 96913
作品 0
崇明
后端工程师
2018-06-18_计算机基本概念

今天看了刘欣的CDSN:码农翻身 ,一个技术大牛写的博客文章; 大牛把计算机原理通过一个个小故事,让你明白工作的过程,个人感觉挺容易理解和接受的; 今天主要学到的几个点是:进程,线程,cpu,内存,...

洛根森
06/18
0
0
嵌入式之S5PV210地址映射详解与外部存储器的接口

一:地址映射详解 哈哈 注意不是内存映射 而是地址映射 大家都知道 S5PV210芯片是基于arm 的cortex-A8架构的 32位的cpu 拥有32位的地址总线和32位的数据总线 因为有32位的地址总线 那么表示的...

zw1996
03/16
0
0
Linux:内核、CPU和处理机

想要有顺序地学习Linux,入口在这里哦:Linux:目录索引 1.什么是内核? 内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内...

w_y_x_y
04/20
0
0
高性能磁盘 I/O 开发学习笔记 -- 硬件原理篇

曾经做嵌入式开发的我,现在做服务器开发,很多思路要转变。今天学习了服务器高性能IO设计,同时自己也还发散开去学习了其他的一些参考资料,顺便结合自己已有的一些知识,做为自己的学习笔记...

amc
2017/10/27
0
0
基础才是重中之重~stream和byte[]的概念与转化

多看几篇 之所以写这篇文章完全是因为最近在研究FastDFS这个分布式的文件存储系统,当然这不是我第一次研究它了,就像我们去看一本书,我们不会只看一篇,而是一次次,一篇篇,每看一次会有新...

mcy247
2017/12/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka技术资料总结(不断更新中)

1、Kafka实践:到底该不该把不同类型的消息放在同一个主题中 2、Kafka剖析系列: Kafka剖析(一):Kafka背景及架构介绍 Kafka设计解析(二):Kafka High Availability (上)...

九州暮云
37分钟前
1
0
面向对象设计原则(OOP)

单一职责原则(Single responsibility principle)又称单一功能原则。它规定一个类应该只有一个发生变化的原因。 核心原则:低耦合,高内聚。 一个类,应该只有一个引起它变化的原因,也就是...

gackey
今天
4
0
C++ 锁

C++提供了两种常用的锁,std::lock_guard<Lockable &T>和std::unique_lock<Lockable &T>。通常使用场景下,这两个锁用法一致。即,在构造锁对象时上锁,在析构锁对象时解锁。使用户从上锁/解...

yepanl
今天
4
0
Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
今天
4
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部