由于博主并不是科班出生,计算机方面的只是有所欠缺,所以写几篇博客记录下我所学的知识,希望能对各位像我一样非科班的同学有所帮助.如有错误的地方,望指正,谢谢给位大佬了!!!
计算机的发展历史
- 1946 - 1957: 电子管计算机(埃尼阿克,第二次世界大战是电子管计算机的催化剂)
- 集成度小,占用空间大
- 功耗高,速度慢
- 操作复杂,换程序需要接线
- 1957 - 1964: 晶体管计算机
- 集成度高,占用空间小
- 功耗低,速度快
- 操作简单,交互方便
- 1964 - 1980: 集成电路计算机(IBM)
- 计算机更小
- 功耗更低,速度更快
- 1980 - 现在: 超大规模集成电路计算机
- 一个芯片可集成上百万的晶体管
- 速度更快
- 用途更广
- 未来:
- 生物计算机
- 量子计算机(阿里达摩院,腾讯)
微型计算机的发展
受限于性能,单核CPU.现在都高于2GHz CPU.
计算机的分类
超级计算机
- 功能强,速度快
- 用于国际研究领域
- 单位为TFlop/s(1TFlop/s为每秒1万亿次浮点运算)
超级计算机世界排名:
大型计算机
- 大型主机
- 高性能
- IBM占主要份额
迷你计算机
- 小型机
- 不需要特殊空调场所
- 运算快
工作站
- 高端的微型计算机
- 体积比普通计算机大,性能强劲
微型计算机
- 普通的家用计算机
- 麻雀缩小,五脏俱全
计算机的体系和结构
- 冯诺依曼体系
将程序指令储存的计算机概念结构.
- 必须有一个存储器
- 必须有一个控制器
- 必须有一个运算器
- 必须有输入输出设备
现在所有的计算机都属于冯诺依曼机.
冯诺依曼瓶颈(CPU经常空转等待数据传输):
- 现代计算机结构
以存储器文核心的结构
计算机的层次和编程语言
- 程序翻译和程序解释
将人类语言解析成计算机理解的语言,进行语言之间的转换.- 程序翻译
- 程序解析
- 程序翻译
- 计算机执行的指令都是L0
- 翻译过程生成新的L0,解释过程不生成新的L0
- 解释过程由L0编写的解释器解释L1程序
翻译+解释的语言: java / c#
注: 比如java语言,就是先使java程序编译成JVM字节码,在解释成机器能够识别的机器码.
- 计算机的层次
硬件逻辑层: 电子工程领域的逻辑电路组成.
微程序机器层: 微指令组成的微程序交由硬件执行(由生产硬件公司的程序员编写).
传统机器层: CPU指令集(机器指令),与硬件相关.不同架构的CPU有不同的指令集.- 微指令与微程序的关系
- 微指令与微程序的关系
操作系统层: 硬件和软件之间的适配层,向上提供操作界面,向下对接指令系统.
汇编语言层: 汇编语言可以由汇编器翻译成可执行的机器语言.
高级语言层: 程序员所接受的高级语言,如java\c++\python等.
应用层: 针对某种用途而专门设计.
计算机的计算单位
-
容量单位
比如4G内存,1T硬盘都属于容量单位.
在物理层面高低电平记录信息,理论上只有0/1两种状态,但是0/1容量太少了(0/1称为bit比特位),需要更大的容量表示.后来出现字节byte(1Byte = 8bit).
-
速度单位(网络速度)
为什么拉100m的光纤,峰值速度是有12M每秒.(网络常用单位是100Mbps)
答:
100M/s = 100Mbps = 100Mbit/s
100Mbit/s = (100/8)MB/s = 12.5MB/s- cpu速度(CPU时钟频率,单位为赫兹[Hz],现在主流的CPU时钟频率都大于2GHz).指的是高低电平每秒钟变化的次数.
2GHz = 2 * 1000^3 Hz = 每秒20亿次.
- cpu速度(CPU时钟频率,单位为赫兹[Hz],现在主流的CPU时钟频率都大于2GHz).指的是高低电平每秒钟变化的次数.
计算机的字符和编码集
- 字符编码机历史
1. ASCll码
使用7个bits就可以完全表示ASCll码(包含95个可打印字符,33个不可打印的字符)
95 + 33 = 128 = 2^7
2. Extended ASCll码
由于很多字符(如π,≈等)无法表示,将7个bits => 8个比特位,扩充到256个字符.加入了常用的数学运算符,带音标的欧洲字符,其他常用符,表格符等
3. 字符编码集的国际化
由于欧洲,东亚,中亚等语言不同,体系不同,中日韩语言体系最为复杂.
(1)中文编码集
a. GB2312
<信息交换引汉字编码集-基本集>
收录7745字符(包含6763汉字和682个其他符号)
b. GBK
<汉字内码扩展规范>
收录21003汉字,支持全部中日韩文字.
向下兼容GB2312,向上支持国际ISO标准
c. unicode
统一码,万国码,单一码
Unicode定义了世界通用的符号集,UTF-*实现编码
UTF-8以字节为单位对Unicode进行编码
注:windows系统默认使用GBK编码,编程推荐使用UTF-8编码