【12】理解电路:从电报机到门电路,我们如何做到“千里传信”?
- 本节比较简单,大致了解,可以直接看总结
引言
我们前面讲过机器指令,你应该知道,所有最终执行的程序其实都是使用“0”和“1”这样的二进制代码来表示的。
这一讲,我和你一起来看看,计算机在硬件层面究竟是怎么表示二进制的,以此你就会明白,为什么计算机会选择二进制。
一、从信使到电报,我们怎么做到“千里传书”?
- 送信:马拉松的故事【派人跑腿,传口信或者送信的方式】
- 声音传输:中国古代的军队有“击鼓进军”和“鸣金收兵”【“金”和“鼓”类似“0”和“1”,可以组成不同的信息:前进、后退、左转。。 】
- 光速传输:灯塔、烽火台。
以上方式,受限于只有“1”和“0”这两种信号,不能传递太复杂的信息,那电报的发明就解决了这个问题。
-
电报传输的信号有两种,一种是短促的点信号(dot 信号),一种是长一点的划信号(dash 信号)。我们把“点”当成“1”,把“划”当成“0”。这样一来,我们的电报信号就是另一种特殊的二进制编码了。
-
特点:1.电信号传播的,所以从输入信号到输出信号基本上没有延时;2.输入信号的速度加快了很多。只要一个手指,就能快速发送电报。
-
摩尔斯密码:电影里最常见的电报信号是“SOS”,这个信号表示出来就是 “点点点划划划点点点”。
制造一台电报机也非常容易。电报机本质上就是一个“蜂鸣器 + 长长的电线 + 按钮开关”。
二、理解继电器,给跑不动的信号续一秒
距离太长时,电线电阻太大,没有办法成功传输信号。为了能够实现这样接力传输信号,在电路里面,工程师们造了一个叫作继电器(Relay)的设备。【继电器 又叫 电驿】
- 继电器的组成:“螺旋线圈 + 磁性开关”的方式
引出 基本逻辑电路
有了继电器之后,我们不仅有了一个能够接力传输信号的方式,更重要的是,和输入端通过开关的“开”和“关”来表示“1”和“0”一样,我们在输出端也能表示“1”和“0”了。【输出端的信号 还可以作为后续线路的输入信号】
“与(AND)”“或(OR)”“非(NOT)”【异或(XOR)】
- 我们在输入端的电路上,提供串联的两个开关,只有两个开关都打开,电路才接通,输出的开关也才能接通,这其实就是模拟了计算机里面的“与”操作。
- 我们在输入端的电路,提供两条独立的线路到输出端,两条线路上各有一个开关,那么任何一个开关打开了,到输出端的电路都是接通的,这其实就是模拟了计算机中的“或”操作。
- 当我们把输出端的“螺旋线圈 + 磁性开关”的组合,从默认关掉,只有通电有了磁场之后打开,换成默认是打开通电的,只有通电之后才关闭,我们就得到了一个计算机中的“非”操作。输出端开和关正好和输入端相反。这个在数字电路中,也叫作反向器(Inverter)。
与、或、非的电路都非常简单,要想做稍微复杂一点的工作,我们需要很多电路的组合。不过,这也彰显了现代计算机体系中一个重要的思想,就是通过分层和组合,逐步搭建起更加强大的功能。
电报机输入输错后,不容易纠正,引出现代的计算机
回到我们前面看的电报机原型,虽然一个按钮开关的电报机很“容易”操作,但是却不“方便”操作。因为电报员要熟记每一个字母对应的摩尔斯电码,并且需要快速按键来进行输入,一旦输错很难纠正。但是,因为电路之间可以通过与、或、非组合完成更复杂的功能,我们完全可以设计一个和打字机一样的电报机,每按下一个字母按钮,就会接通一部分电路,然后把这个字母的摩尔斯电码输出去。
虽然在电报机时代,我们没有这么做,但是在计算机时代,我们其实就是这样做的。我们不再是给计算机“0”和“1”,而是通过千万个晶体管组合在一起,最终使得我们可以用“高级语言”,指挥计算机去干什么。
总结【个人总结的重点】
- 了解二进制信息传输的演变:
人送信【跑腿】—>击鼓传声【声信号】—>灯塔、烽火台【光信号】—>电报机【电信号】—>现代的计算机【逻辑电路】 - 继电器(Relay)的引入:又叫 电驿,起到中继的作用。由“螺旋线圈 + 磁性开关”开关组成。
- 摩尔斯电码:“点“(代表0)和” 划 “(代表1)信号的组合。SOS的摩尔斯电码:点点点划划划点点点(• • •- - - • • • )