这篇文章主要写和计算机来源、计算机构造和计算机的存储方式。
一、计算机的进化史
1.1 第一台计算器(ENIAC)
世界上第一台电子数字计算机埃尼阿克(ENIAC)于1946年在美国宾夕法尼亚大学诞生,这台计算机共用了 18000 18000 18000多个电子管组成,占地 170 m 2 170m^2 170m2,总重量为 30 t 30t 30t,耗电 150 k w / h 150kw/h 150kw/h,运算速度达 5000 次 / s 5000次/s 5000次/s,是计算机发展史上的第一个里程碑。
1.2 第一台可存储程序的计算机(EDVAC)
第一台存储程序的计算机(EDVAC),由冯诺依曼小组研发,冯诺依曼被称为"现代电子计算机之父"。
它采用二进制来表示计算机内部的指令和数据,预先将编程好的程序和原始数据存入存储器中,再启动计算机工作(预处理)。
这个计算机还采用了运算器、存储器、控制器、输入设备和输出设备五大部分组成的体系结构,该结构被称为冯诺依曼结构,且沿用于至今。
二、计算机物理器件发展史
2.1 电子管计算机
第一代计算机(20世纪40年代中到20世纪50年代末)为电子管计算机,其逻辑元件采用电子管,存储器件为声延迟线或磁鼓。计算机“软件”一词尚未出现,编制程序所用工具为低级语言。电子管计算机体积大、速度慢(每秒千次或万次 )、存储器容量小。
2.2 晶体管计算机
第二代计算机(20世纪50年代中后期到20世纪60年代中)为晶体管计算机(1947年美国贝尔实验室发明了晶体管)。 这一代计算机除了逻辑元件采用晶体管以外,其内存采用磁芯存储器,外存采用磁鼓与磁带存储器,实现了浮点运算, 并提出了变址、中断、I/O处理器等新概念。这时计算机软件出现了多种高级语言及其编译程序。
2.3 中小规模集成电路计算机
第三代计算机(20世纪60年代中到20世纪70年代中后期)为中小规模集成电路计算机(1958年发明了集成电路使得计算机的逻 辑元件与存储器均可由集成电路实现)。这时出现了一系列计算机新技术,包括微程序控制、高速缓存、虚拟存储器和 流水线技术等;在软件方面首先实现了操作系统,具有资源调度、人机通信和输入输出控制等功能。
2.4 超大规模集成电路计算机
第四代计算机(20世纪70年代后期开始)为超大规模集成电路计算机。大规模(LSI)和超大规模(VLSI)集成电路成 为计算机的主要器件,且集成度越来越高,出现了微处理器。第四代计算机时期的另一个重要特点是计算机网络的发展 与广泛应用。
三、图灵机
图灵机
图中的这个就是图灵机,上面有一张纸,中间有一个写着0-11的数字的链条,负责翻译上面的内容,下面的带子上面打印了一些内容,表示翻译内容后进行操作。这是我们伟大的图灵发明的一个用于解码的机器结构。就以C++为例,每次写好的代码将会通过机器进行翻译,从而转换为最低级的机器语言运行
图灵的照片
图灵的这个机器最贴合C/C++语言的switch
语句
switch(x) { //相当于原始代码
case 1 : ...; break; //翻译内容并执行
case 2 : ...; break;
...
default : ...;
}
图灵的这个机器相当于所有语言的来时之路,因此,在计算机中,有一种名叫图灵奖的奖,就像诺贝尔奖一样,因此图灵奖是计算机中的最高奖项
汇编程序(汇编器) | 解释程序(解释器) | 编译程序(编译器) |
---|---|---|
将汇编语言程序翻译成机器语言程序 | 将源程序翻译成机器指令并立即执行 | 将高级语言翻译城机器语言或汇编语言 |
四、计算机如何存储数据
4.1 存储单位
计算机中最小的运输单位是比特(bit),简写为b,一个bit有多小?小到只能存储一个二进制的0或1
最小的存储单位是字节(Byte),简写为B。1Byte=8bit
肯定会有人问:为什么
bool
类型不是 1bit 而是 1Byte
注意,bit是最小的运输单位,不能单独用来存储,否则会减慢计算机运行速度
其次是千字节,简写为KB。1KB=1024B
然后是兆字节,简写为MB。1MB=1024KB
再往后是吉字节,简写为GB。1GB=1024MB
最后是太字节,简写为TB。1TB=1024GB
4.2 存储方式
4.2.1 源码
一个8位有符号整型,使用一字节可以刚好塞下。因为有正数负数,因此在计算机中,要让第一位成为符号位,第一位为0表示正数,第一位为1表示负数,剩下七位运用二进制表示。因此一字节可以存储-128~127这么多个数字。如果是无符号呢?那就不要符号位了,第一位也来存储数据。
4.2.2 反码
把除符号位的其他位取反,得出来的就是反码
4.3.3 补码
反码+1=补码。计算机的主要存储方式是补码
找找规律吧(这是四位十六进制补码)
0
x
f
f
f
f
=
−
1
0
x
f
f
f
e
=
−
2
0
x
f
f
f
d
=
−
3
0
x
f
f
f
c
=
−
4
.
.
.
0xffff = -1\\0xfffe = -2 \\0xfffd = -3 \\0xfffc = -4 \\...
0xffff=−10xfffe=−20xfffd=−30xfffc=−4...
0
x
f
f
f
f
+
1
=
0
x
10000
,
∴
0
x
f
f
f
f
在补码中表示
−
1
0
x
f
f
f
e
+
2
=
0
x
10000
,
∴
0
x
f
f
f
e
在补码中表示
−
2
.
.
.
0xffff + 1 = 0x10000, \therefore 0xffff在补码中表示-1\\0xfffe+2 = 0x10000, \therefore 0xfffe在补码中表示-2\\ ...
0xffff+1=0x10000,∴0xffff在补码中表示−10xfffe+2=0x10000,∴0xfffe在补码中表示−2...
4.3 整数存储
在C++中,int
、long long
、short
、char
类型属于有符号整型,unsigned
、unsigned long long
、、unsigned short
、unsigned char
、bool
类型属于无符号整型。如果有符号那么第一位是符号位,剩下的全是二进制数字
4.4 小数存储
单精度(float
):符号1位,阶码8位,尾数23位
双精度(double
):符号1位,阶码11位,尾数52位
阶码:整数部分;尾数:小数部分
点我查看小数如何转换二进制
4.5 字符存储
4.5.1 西文字符
使用一种名叫ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)的编码(其实前面就有关于它的帖子)
点我跳转
4.5.2 中文字符
使用类型wchar_t
进行存储(占用两个字节),相当于可以存储65,536个汉字。这种字符也叫做宽字符
4.6 图片存储
首先是颜色,假如黑白两色那么可以使用一比特存储,又假如分辨率为1024x1024,那么就需要1024×1024×1比特存储,又假如256种颜色,因为一字节可以存储256种二进制数,就成了1024×1024字节,也就是1MB
4.7 视频存储
都知道,视频是由很多个图片交替显示形成的。假如一个30帧的60秒视频,分辨率1024x1024,256色,那么需要1800MB(1×1024×1024×30×60字节)
五、计算机构造
由运算器、存储器、控制器、输入设备和输出设备构成,前面写了,点蓝色部分可跳转
5.1 运算器
5.2 存储器
5.2.1 随机存取存储器(RAM)
RAM,Random Access Memory 的缩写,中文可译为随机存取存储器,它最大的特点是只能临时性地存储数据或指令,一旦计算机关闭或者意外断电,RAM 存储的数据将全部丢失,它通常以一个单独的存储芯片,或者几个存储芯片集成在一个电路板上(例如内存条)的形式,安装在计算机的主板上。因此RAM属于易失性存储器
对于处在关闭状态的计算机来说,内部的 RAM 不会存储任何数据。当您按下计算机电源打开计算机时,那些位于外部存储器中、当前计算机运行所需要的数据或指令,就会被拷贝到 RAM 中
如果将 RAM 中存储的数据看做是我们的短期记忆,那么外部存储器中的数据就可以看作是我们的长期记忆。短期记忆仅能存留较短的时间,而长期记忆可以长期保留,必要时我们还可以利用长期记忆更新短期记忆。计算机使用 RAM 的过程也是如此,当 RAM 被填满时,计算机会用从外部存储器读取到的新数据覆盖掉 RAM 中不紧要的旧数据
RAM 的数量和存储容量会直接影响计算机的性能。也就是说,如果计算机没有足够的 RAM 存储空间来支撑它运行操作系统和应用程序,那么计算机的性能肯定会下降;反之,计算机可用的 RAM 空间越多,它的运行效率就越高
RAM存储器
5.2.2 只读存储器(ROM)
ROM,Read-Only Memory 的缩写,中文可译为只读存储器。所谓“只读”,即 CPU 只能读取存储在 ROM 中的数据或指令,无法对存储的数据做修改,更无法写入新的数据
和 RAM 正好相反,ROM 属于非易失性存储器,即该类存储器支持永久性地存储数据或指令,即便计算机关机或者意外断电,ROM 存储的数据也不会丢失
ROM 的内部含有一种特殊的电子熔丝元件(可以简单的理解为保险丝或者熔断器),当制作 ROM 时,制作商会将设计人员指定的信息以编程的方式嵌入到 ROM 中,即便计算机关闭或者突然断电,写入的数据也不会丢失。因此,ROM 不但是一种可编程逻辑部件(简称 PLD),还是一种非易失性存储器
ROM存储器
5.3 控制器
5.3.1 CPU
CPU,中央处理器,这是计算机用于处理数据的核心,可以说一个电脑没有CPU就像一个人没有大脑一样,就无法进行任何操作了
5.3.2 BIOS
BIOS,全写为Basic Input Output System,意为基础输入输出系统,这是计算机中必不可少的一个应用
告诉你们一个冷知识:如何进入BIOS设置
- 按Del
在电脑开机启动时,屏幕下方可能会出现“Press DEL to enter EFI BIOS SETUP”的提示,此时按下Del键即可进入BIOS设置程序 - 按Esc
有些电脑在开机进入logo画面时会出现“Press Esc to enter SETUP”的提示,这时按下Esc键就可以进入BIOS设置界面 - 按F2
某些电脑品牌,如惠普、索尼、戴尔、acer、明基、Thinkpad315ed,在开机后会出现“Press F2 goto Setup Utility”的提示,此时按下F2键即可进入BIOS设置界面 - 按F1
一些电脑品牌,如IBM、东芝、Thinkpad部分型号,在开机时可以通过按下F1键来进入BIOS设置界面 - 其他按键
还有一些特殊品牌的电脑可能需要使用其他按键,如F10(康柏电脑)等
需要注意的是,不同的电脑可能会有不同的进入BIOS的方式,有些电脑可能还会要求输入密码才能进入BIOS。如果上述方法都无法进入BIOS,建议查阅电脑或主板的用户手册,或者在网上搜索具体的进入方法。另外BIOS中的这些东西不能随意设置,因为试试就逝世。想要不保存退出按Esc,想要保存并退出就按F10
5.4 输入设备和输出设备
5.4.1 输入设备
好比于我们的眼睛、耳朵、鼻子、神经系统。眼睛可以向大脑输入视觉,耳朵可以输入听觉,鼻子可输入味觉,神经系统可输入触觉。在计算机中,输入设备指可以获取信息传给系统的设备
- 键盘
- 鼠标(或触摸板)
- USB接口(或光盘接口)
- 摄像头
5.4.2 输出设备
好比于我们的手脚。用手可以拿东西,用脚可以走路。在计算机中,输出设备指可以从系统发出信息的设备
- 屏幕
- 指示灯
预览
- 二十六:vector容器
- 二十七:递推
- 二十八:set容器
- 二十九:map容器
- 三十:二分查找
- 三十一:前缀和与差分
- 三十二:栈(stack)
- 三十三:队列(queue)
- 三十四:神奇的计算机
- 三十五:树与遍历
- 三十六:链表
- 三十七:图与DFS、BFS
- 三十八:
array
容器 - 三十九:
priority_queue
容器