课程链接

点击查看【bilibili】

第一课:计算机早期历史

0、课程目标:从高层次总览一系列计算机话题,快速入门计算机科学。

1、计算机技术的影响——进入信息时代

  • 出现自动化农业设备与医疗设备
  • 全球通信和全球教育机会变得普遍
  • 出现意想不到的虚拟现实/无人驾驶/人工智能等新领域

    2、计算机的实质:

    极其简单的组件,通过一层层的抽象,来做出复杂的操作。
    计算机中的很多东西,底层其实都很简单,让人难以理解的,是一层层精妙的抽象。像一个越来越小的俄罗斯套娃。

    3、关于计算的历史:

  • 公元前 2500 年,算盘出现,为十进制,功能类似一个计数器。

  • 公元前 2500 年-公元 1500 年:星盘、计算尺等依靠机械运动的计算设备出现
  • 公元 1613 年:computer 的概念出现,当时指的是专门做计算的职业,
  • 1694 年:步进计算器出现,是世界上第一台能自动完成加减乘除的计算器。
  • 1694-1900 年:计算表兴起,类似于字典,可用于查找各种庞大的计算值。
  • 1823 年:差分机的设想出现,可以做函数计算,但计划最后失败。
  • 19 世纪中期:分析机的设想出现,设想存在可计算一切的通用计算机。
  • 1890 年:打孔卡片制表机。原理:在纸上打孔→孔穿过针→针泡入汞→电路连通→齿轮使计数+1。

    第二课:电子计算机的发展史

    1、电子计算机元器件变化:

    继电器→真空管→晶体管

    2、计算机的出现背景:

    20 世纪人口暴增,科学与工程进步迅速,航天计划成形。以上导致数据的复杂度急剧上升、计算量暴增,对于计算的自动化、高速有迫切的需求。

    3、电子计算机的发展:

  • 1945 年 哈佛马克 1:使用继电器,用电磁效应,控制机械开关,缺点为有磨损和延迟。

  • *最早还因为有虫子飞进去导致故障,引申出 bug=故障的意思。
  • 1943 年 巨人 1 号:使用真空管(三极管),制造出世界上第一个可编程的计算机。
  • 1946 年 ENIAC:第一个电子通用数值积分计算机。
  • 1947 年 晶体管出现,使用的是固态的半导体材料,相对真空管更可靠。
  • 1950s 空军 ANFSQ-7: 真空管到达计算极限。
  • 1957 年 IBM 608: 第一个消费者可购买的晶体管计算机出现。

第三课:布尔逻辑与逻辑门

1、计算机为什么使用二进制:

  1. 计算机的元器件晶体管只有 2 种状态,通电(1)&断电(0),用二进制可直接根据元器件的状态来设计计算机。
  2. 而且,数学中的“布尔代数”分支,可以用 True 和 False(可用 1 代表 True,0 代表 False)进行逻辑运算,代替实数进行计算。
  3. 计算的状态越多,信号越容易混淆,影响计算。对于当时每秒运算百万次以上的晶体管,信号混淆是特别让人头疼的的。

    2、布尔代数&布尔代数在计算机中的实现

  4. 变量:没有常数,仅 True 和 False 这两个变量。

  5. 三个基本操作:NOT/AND/OR
  6. 为什么称之为“门”:控制电流流过的路径

    1)NOT 操作:

  • 命名:称为 NOT 门/非门。
  • 作用:将输入布尔值反转。输入的 True 或 False,输出为 False 或 True。
  • 晶体管的实现方式:
    • 半导体通电 True,则线路接地,无输出电流,为 False。
    • 半导体不通电 False,则输出电流从右边输出,为 True。

image.png

2)AND 操作

  1. 命名:AND 门/与门
  2. 作用:由 2 个输入控制输出,仅当 2 个输入 input1 和 input2 都为 True 时,输出才为 True,2 个输入的其余情况,输出均为 False。*可以理解为,2 句话(输入)完全没有假的,整件事(输出)才是真的。

image.png

  1. 用晶体管实现的方式:

串联两个晶体管,仅当 2 个晶体管都通电,输出才有电流(True)
image.png

3)OR 操作

  1. 命名:OR 门/或门
  2. 作用:由 2 个输入控制输出,只要其中一个输入为 True,则输出 True。

image.png

  1. 用晶体管实现的方式:

使用 2 个晶体管,将它们并联到电路中,只要有一个晶体管通电,则输出有电流(True)。
image.png

3、特殊的逻辑运算——异或

  1. 命名:XOR 门/异或门
  2. 作用:2 个输入控制一个输出。当 2 个输入均为 True 时,输出 False,其余情况与 OR 门相同。

image.png

  1. 图示:

先用一个 OR 门,将其与 AND 门并联,AND 门与 NOT 门串联,最后让 NOT 与 AND 门并联,获得输出。
image.png

4、逻辑门的符号表示

  1. 作用:将逻辑门简化,将逻辑门用于构建更大的组件,而不至于太复杂。
  2. 图示:
    • 非门:用三角形+圆圈表示
    • 与门:用 D 型图案表示
    • 或门:用类似 D 向右弯曲的图案表示
    • 异或门:用或门+一个圆弧表示

image.png

5、抽象的好处

使得分工明确,不同职业的工程师各司其职,而不用担心其他细节。


第四课:二进制

1、二进制的原理,存储单元 MB/GB/TB 解释

  1. 计算机中的二进制表示
    1. 单个数字 1 或 0,1 位二进制数字命名为位(bit),也称 1 比特
  2. 字节(byte)的概念

1byte=8bit,即 1byte 代表 8 位数字。最早期的电脑为八位的,即以八位为单位处理数据。为了方便,将八位数字命名为 1 字节(1byte).

  1. 十进制与二进制的区别:
    • 十进制有 10 个数字,0-9,逢 10 进 1(不存在 10 这个数字),则每向左进一位,数字大 10 倍。
    • 二进制有 2 个数字,0-1,逢 2 进 1,(不存在 2 这个数字),则每向左进一位,数字大 2 倍。
  2. 如何进行二进制与十进制联系起来:
    • 将十进制与二进制的位数提取出来,编上单位:

eg.二进制的 1011=12^0 + 12^1 + 02^2 + 12^3= 11(从右往左数)
eg.十进制的 1045= 110^3 + 010^2 + 410^1 + 510^0

  1. 十进制与二进制的图示:
    • 十进制的 263

image.png

  • 二进制的 10110111

image.png

  1. 二进制的运算:

相同的位数相加,逢 2 进 1
image.png

  1. byte 在电脑中的单位换算:

1kb=2^10bit = 1024byte =1000b
1TB=1000GB
1GB=十亿字节=1000MB=10^6KB

  1. 32 位与 64 位电脑的区别

32 位的最大数为 43 亿左右 32 位能表示的数字:0——2的32次方-1,一共2的32次方个数
64 位的最大数为 9.2*10^18

2、正数、负数、正数、浮点数的表示

1)计算机中表示数字的方法

  1. 整数:

表示方法:

  • 第 1 位:表示正负 1 是负,0 是正(补码)
  • 其余 31 位/63 位: 表示实数
    1. 浮点数(Floating Point Numbers):

定义:小数点可在数字间浮动的数(非整数)
表示方法:IEEE 754 标准下
用类似科学计数法的方式,存储十进制数值

  • 浮点数=有效位数*指数
  • 32 位数字中:第 1 位表示正负,第 2-9 位存指数。剩下 23 位存有效位数

eg.625.9=0.6259(有效位数)*10^3(指数)

3、美国信息交换标准代码-ASCⅡ,用来表示字符

  1. 全称:美国信息交换标准代码
  2. 作用:用数字给英文字母及符号编号
  3. 内容:7 位代码,可存放 128 个不同的值。
  4. 图示:

image.png

4、UNICODE,统一所有字符编码的标准

  1. 诞生背景:1992 诞生,随着计算机在亚洲兴起,需要解决 ASCⅡ不够表达所有语言的问题。

为提高代码的互用性,而诞生的编码标准。

  1. 内容:UNICODE 为 17 组的 16 位数字,有超过 100 万个位置,可满足所有语言的字符需求。

第五课:算术逻辑单元

1、什么是算术逻辑单元

  1. 命名:简称 ALUArithmetic&Logic Unit
  2. 组成:ALU 有 2 个单元,1 个算术单元和 1 个逻辑单元(Arithmetic Unit 和 Logic Unit)
  3. 作用:计算机中负责运算的组件,处理数字/逻辑运算的最基本单元

    2、算术单元

  4. 基本组件:

    1. 由半加器、全加器组成
      • 半加器、全加器由 AND、OR、NOT、XOR 门组成
  5. 加法运算

    1. 组件:AND、OR、NOT、XOR 门
    2. 元素:输入 A,输入 B,输出(均为 1 个 bit,即 0 或 1)

    3. 半加器

      1. 作用:用于计算个位的数字加减。
        • 输入:A,B
        • 输出:总和,进位

image.png

  1. 2. 抽象:

image.png

  1. 全加器:

作用:用于计算超过 1 位的加法(ex:1+1+1),由于涉及进位,因此有 3 个输入(C 充当进位)。
image.png
原理图示:
image.png

  1. 如何用半加器与全加器做 8 位数的加法
    1. 说明:以 8 位行波加法器为例
      1. 用半加器处理第 1 位数(个位)的加法,得到的和为结果的第 1 位。
      2. 将输出的进位,输入到第 2 位用的全加器的输入 C 中。
      3. 将第 2 位的 2 个数用全加器计算,得到的和为结果的第 2 位(sum)。
      4. 将第 2 位计算的进位连接到百位的全加器输入 C 中。
      5. 在第 3-8 位上,循环第 3-4 步的操作。

现在电脑使用的加法器叫“*超前进位加法器
image.png

  1. 算术单元支持的其他运算

image.png

3、溢出的概念

内容:在有限的空间内,无法存储位数过大的数,则称为溢出。
说明:第 8 位的进位如果为 1,则无法存储,此时容易引发错误,所以应该尽量避免溢出。

4、逻辑单元

作用:执行逻辑操作,如 NOT、AND、OR 等操作,以及做简单的数值测试。

5、ALU 的抽象

  1. 作用:ALU 的抽象让工程师不再考虑逻辑门层面的组成,简化工作。
  2. 图示:像一个大“V”

image.png

  1. 说明:

图示内容包括:

  • 输入 A,B
  • 输出
  • 标志:溢出、零、负数

image.png


第六课 寄存器与内存

0、课程导入

当玩游戏、写文档时如果断电,进度会丢失,这是为什么?

  • 原因是这是电脑使用的是 RAM(随机存取存储器),俗称内存,内存只能在通电情况下存储数据。
  • 本节课程将讲述内存的工作原理。

    1、概念梳理

    锁存器:锁存器是利用 AND、OR、NOT 逻辑门,实现存储 1 位数字的器件。
    寄存器:1 组并排的锁存器
    矩阵:以矩阵的方式来存放锁存器的组合件,nn 门锁矩阵可存放 n^2 个锁存器,但同一时间只能写入/读取 1 个数字。(早期为 1616 矩阵)
    位址:锁存器在矩阵中的行数与列数。eg.12 行 8 列
    多路复用器:一组电线,输入 2 进制的行址&列址,可启用矩阵中某个锁存器
    内存(RAM):随机存取存储器,由一系列矩阵以及电路组成的器件,可根据地址来写入、读取数据。类似于人类的短期记忆,记录当前在做什么事情。

    2、锁存器

    作用:存储 1 位数字。
    图示:
    image.png

    2.5、门锁:

    锁存器需要同时输入 2 个数字,不太方便。
    为了使用更方便,只用 1 根电线控制数据输入,发展了门锁这个器件。另外,用另一根电线来控制整个结构的开关。(和复位作用不同)
    image.png

    3、寄存器

    作用:并排使用门锁,存储多位数字
    图示:
    image.png

    4、门锁矩阵

  1. 作用:

n*n 的矩阵有 n^2 个位址,则可以存储 n^2 个数。但 1 个矩阵只可记录 1 位数字,n 个矩阵组合在一起,才可记录 n 位数。如 1 个 8 位数,会按位数分成 8 个数,分别存储在 8 个矩阵的同一个位址中。
8 个矩阵,则可以记录 256 个 8 位数字。

  1. 通俗理解:

1616 的门锁矩阵,可理解为 1 个公寓,1 个公寓 256 个房间。
8 个门锁矩阵并排放,则有了 8 个公寓。
规定每一个公寓同一个编号的房间,都有一样的标记(地址),共同组成 8 位数字。
那么 8 个公寓就能存 (8
256 / 8)个数字。

  1. 原因:

16*16 的门锁矩阵虽然有 256 个位置,但每次只能存/取其中 1 个位置的数字。因此,要表示 8 位数字,就需要同时调用 8 个门锁矩阵。

  1. 图示:

image.png
image.png

  1. 使用方法:

在多路复用器中输入位址,x 行 x 列(2 进制),即可点亮 x 行 x 列的锁存器。

  1. 举例: | 行列数 | 矩阵 1 | 矩阵 2 | 矩阵 3 | 矩阵 4 | 矩阵 5 | 矩阵 6 | 矩阵 7 | 矩阵 8 | | —- | —- | —- | —- | —- | —- | —- | —- | —- | | 1 行 5 列 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | | 2 行 3 列 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 |

5、内存

  1. 粗略定义:将一堆独立的存储模块和电路看做 1 个单元,组成内存方块,n 个内存方块组成内存模块。在一个电路板上所有的内存方块统称为内存(RAM)。
  2. 图示:

image.png


第七课 中央处理器(CPU)

1、概念梳理

  • CPU(Central Processing Unit):中央处理单元,负责执行程序。通常由寄存器/控制单元/ALU/时钟组成。与 RAM 配合,执行计算机程序。CPU 和 RAM 之间用“地址线”、“数据线”和“允许读/写线”进行通信。
    • 指令:指示计算机要做什么,多条指令共同组成程序。如数学指令,内存指令。
  • 时钟:负责管理 CPU 运行的节奏,以精确地间隔,触发电信号,控制单元用这个信号,推动 CPU 的内部操作。
    • 时钟速度:CPU 执行“取指令→解码→执行”中每一步的速度叫做“时钟速度”,单位赫兹Hz,表示频率。
    • 超频/降频
    • 超频,修改时钟速度,加快 CPU 的速度,超频过多会让 CPU 过热或产生乱码。
    • 降频,降低时钟速度,达到省电的效果,对笔记本/手机很重要。
  • 微体系框架:以高层次视角看计算机,如当我们用一条线链接 2 个组件时,这条线只是所有必须线路的抽象。

    2、CPU 工作原理

    1)必要组件:

  • 指令表:给 CPU 支持的所有指令分配 ID

  • 控制单元:像指挥部,有序的控制指令的读取、运行与写入。
    • 指令地址寄存器:类似于银行取号。该器件只按顺序通报地址,让 RAM 按顺序将指令交给指令寄存器。
    • 指令寄存器:存储具体的指令代码。

image.png

2)过程

  • 取指令:指令地址寄存器发地址给 RAM→RAM发该地址内的数据给指令寄存器→指令寄存器接受数据
  • 解码:指令寄存器根据数据发送指令给控制单元 →控制单元解码(逻辑门确认操作码)
  • 执行阶段:控制单元执行指令(→涉及计算时→调用所需寄存器→传输入&操作码给ALU执行)→调用RAM特定地址的数据→RAM将结果传入寄存器→指令地址寄存器+1

    3)图示:

    第一个 CPU
    image.png