[TOC]
1.至亲密友
1.1 编码是什么?
- 一种用来在机器和人之间传递信息的方式
- 编码就是交流
1.2 生活中的编码方式:
- 声音
对任何能听见我们的声音并理解我们所说的语言的人来说,我们发出的声音所形成的词语是一种可识别的编码. - 书面语
- 手语
聋哑人
1.3 为什么需要各种不同的编码?
我们使用各种不同的编码来为我们自己的交流服务,因为有些编码有时比其他编码更便捷.
如果一种编码可以用在其他编程无法取代的地方,那么它就是一种有用的编码.
1.4 那么人类如何与计算机沟通?
不同类型的信息需要它们各自的编码.
1.5 如何增加沟通效率?
缩减编码的数字为2.
为了使编码发送的速度最快,你可以把
- 莫尔斯编码口语版把讲话内容缩减到只剩下2个声音.
- 文字简化成点和划
事实上,两个不同的事物,只要经过适当的组合,就可以表示所有类型的信息.
2.编码与组合
2.1 发展史:
莫尔斯编码其实是伴随着电报机的问世而被发明的。
正如通过研究莫尔斯码我们可以很方便地理解编码的本质一样,通过电报机来了解计算机硬件也是个不错的途径。
2.2 莫尔斯码可以表示的字数:
点和划的组合可以表示任何你想要的任意数目的码字。
2.3 二进制码:
莫尔斯码也被称作二进制码(Binary Code),因为这种编码的组成元素只有两个————“点”和“划”。
类似硬币,只有正反面。
二元对象(like硬币)和二进制码(like莫尔斯码)常常使用2的乘方来进行描述
2.4 组合分析
关于二进制编码的分析工作,其实是数学的一个分支,称作“组合学”或“组合分析”。
传统意义上来说,因为组合分析涉及类似像扔硬币,掷骰子等需要对其组合数目进行推算的问题,所以它经常被应用到概率和统计学中。
3.布莱叶盲文与二进制码
3.1 布莱叶盲文是什么?
3.2 布莱叶盲文特点?
数字标示符和取消“数字标示状态”的字母标示符,改变了后面编码的意义(字母->数字,数字->字母)。
这些编码通常被称为“优先码”(precedence codes)或者”换挡码“(shift codes)。它们改变作用域内编码的含义,直到作用域结束
代码大全2 里面有提到作用域,作用域就像变量在程序中的知名度
逃逸码(escape codes) :让你“逃离”对编码串单调的,一成不变的解析,而转入一种新的解析方式中。
3.3 盲文与Binary Code有啥联系?
盲文中的点码都是二进制的。一个单独的点不是平的就是凸起的。
4.手电筒的剖析
4.1 一些原理:
- 研究电流工作原理的、最主流的科学理论叫做“电子理论”,这套理论认为电流是由电子的运动而产生的。
- 电流产生的原因:一个原子中电子的数目一般情况下与质子数目相同。但在某些情况下,电子可能从原子中脱离。
- 电路中,某原子所含有的一个电子逃逸到它相邻的下一个原子中,与此同时,这个原子又从相邻的上一个原子中获取一个电子,而失去电子的原子又会从与其相邻的一个原子获得电子,如此循环,电路中的电子不断地从一个原子移动到下一个原子,就形成了电流。
4.2 手电筒与二进制的联系?
- 开关:闭合&断开
- 电流:有&无
- 灯泡:亮&不亮
就像二进制码一样,没有介于两者之间的状态。
二进制码与电气电路之间有很大的相似性。
5.绕过拐角的通信
5.1 与邻居的微型发报系统:
使用导线,我们不仅可以构建出一个可以绕过拐角的、能够在视角之外的发报系统,而且无需受距离的限制。我们可以跨越成千上百英里来进行通信,只需铺足够长的线路即可。
5.2 现实难题:如何做出很长的导线?
在150年前,人们在铺设第一个跨越美洲和欧洲的电报系统时,这些都是面临的问题。如果忽视了线路直径和高电压的因素,电报线路将完全无法持续工作。
根据设计方案,系统距离跨度的极限是200英里。这个长度与纽约和加利福尼亚数千里的距离相比,还是有很大差距的。
茨威格《人类群星闪耀时》里面铺海底电缆那个?
这个难题的解决方案——不是给手电筒,而是给“滴滴答答”的近代电报系统的————尽管它只不过是个很简陋的装置,但是正是基于这个装置,整个计算机系统才被构建出来。
6.电报器与继电器
6.1 通讯的历史背景:
19世纪早期,人们可以进行即时通讯或远距离通信,但是不能同时做到这两点。即时通讯受声音传播距离的限制,或者受视野的限制。使用信件可以进行更远距离的通信,但是寄信耗费的时间太多,并且需要马匹、火车或轮船。
6.2 怎么提高远距离通讯的速度?
使用电报(telegraph,远距离书写)
6.2.1 电报机的原理:
在线路的这一端采取一些措施,使线路的另一端发送某种变化。
理论基础:
- 利用电磁现象。
-
电磁铁是电报机的基础。
在线路的一段闭合或断开开关,可以使线路另一端的电磁铁有所动作。
6.2.2 传统电报机中发送信息的电键:
6.2.3 传统电报机中的接收器:
6.2.4 电报机模型:
电报机的发明标志着现代通信的开始。
人们第一次能够在视线或者听力之外的距离范围进行实时交流,而且信息传递速度很快。
更耐人寻味的是,这个发明使用了二进制码。
但是在后来的电子和无线通信(包括电话、无线电、电视)所使用的通信模式中,二进制码被废弃了,
直到后来它又被应用在了电脑、光盘、数字影碟、数字卫星电视广播和高清电视上。
6.3 怎么解决长导线带来的大电阻的问题?
设置一个中继系统。
6.3.1 中继系统原始模型:
6.3.2 继电器:
继电器是一个意义非凡的设备。
它是一个可由电流控制的开关。
实际上,使用它,甚至可以装配好一台近乎完整的计算机来~
6.3.3 中继系统最终模型:
在使用继电器之前还要学会如何计数。
7.我们的十个数字
语言只不过是一种编码。
数字似乎并不是那么容易随文化的不同而改变。
数字是我们平常所能接触到的一种最抽象的编码。
十进制系统:
大多数文明都是建立在以10为基数的数字系统上的(有时候是以5为基数)
在这个意义上,以10为基数或使用十进制数字系统完全是随意的。
如今我们所用的数字系统通常被称为阿拉伯数字,也可以称为印度-阿拉伯数字系统。
阿拉伯数字系统的特点
- 数字和位置有关:一个数字的位置不同,其代表数量也不同。
- 没有代表10的专门符号
- 多了新符号“0”
十进制计数系统易于计数,但是不适用于每种情况,比如对卡通人物没有任何意义。
8.十的替代品
8.1 八进制系统:
8.2 四进制系统:
8.3 二进制系统:
特点:
- 二进制最大的问题就是数字用完得很快。
- 二进制数的长度增长得很快而非数值增大得快。
通过将数字系统减少至只有0和1两个数字的二进制数字系统,已经是最简单的数字系统了。
二进制数字系统在算术与电子技术之间搭起了一座桥梁。
- 电线:有电则1,无电则0
二进制数与计算机之间有着紧密的联系。
9.二进制数:
你可以选择很多方法来表示“是”或者“不是”。
不需要用一句话、一个单词甚至一个字母来表达。
你需要的是一个比特,也就是只需要一个0或1即可。
就如前面提到的,十进制与其他数字系统相比并没有什么不同,只是我们通过使用它来计数。
但是,二进制系统有特殊性:
- 它是人们所能得到的最简单的数字系统
9.1 bit的意义:
本义:
- bit(比特)代表binary digit(二元数字)
一般的意义:
- “一小部分,程度很低或者数量很少”
1bit ———— 一个二进制数字位 ———— 确实是一个非常小的量。
在计算机时代里的意义:
- bit被看做是组成信息块的基本单位
9.2 为什么要用二进制数来传达信息?
二进制数不是传达信息的唯一方法。字母、单词、莫尔斯码、布莱叶盲文和十进制数均可以。
关键:
- bit所传递的信息量极少
- 1bit 是可能存在的最小的信息量,任何低于1bit内容都根本算不上是信息。
信息是指多个可能性中的一种。
所有可以被转换成对两种或多种可能性的选择的信息,都可以用比特来表示。
利用二进制表示信息的一个额外的好处:
- 我们可以清楚地知道我们是否已经想到了所有的可能性
9.3 bit在日常的体现:
通用产品代码(UPC,Universal Product Code):
整个UPC只不过是一串95位二进制数。
9.4 bit的总结:
bit可以表示文字、图片、声音、音乐、电影,产品编码、胶片速度、影评结果、英国军队的入侵,以及心爱之人的意图。
但是,从根本来说,bit是数字。
在用Bit表示其他信息的时候,我们所要做的就是计算有多少种可能性。
这决定了我们需要的比特位数,以便每种可能性都可以分配到一个编号。
bit在逻辑学中也很重要。
逻辑学是哲学和数学的奇特融合,其主要目的就是确定某个陈述是真(1)还是假(0)。
10.逻辑与开关
10.1 布尔代数:
对于古希腊人而言,逻辑是追求真理的过程中使用的一种分析方法,是一种哲学形式.
而布尔认为可以找到一种数学形式来描述逻辑,因此发明了布尔代数.
布尔把代数从数的概念中抽离出来使其更加抽象
在布尔代数中,操作数不是数字而是类(class)
一个类就是一个事物的群体,后来也被称为集合(set)
10.1.1 布尔代数的符号:
+: 表示两个集合的并集
x : 表示两个集合的交集
1 : 全集
0 : 空集
10.1.2 布尔代数与传统代数的最大区别:
F x F = F
- 布尔代数:
母猫和母猫的交集依然是母猫 - 传统代数:
该式子不成立
10.2 布尔代数与电路的联系:
布尔代数可以用开关,导线和灯泡组成的电路来实现.
10.2.1.AND运算---串联电路
10.2.2.OR运算---并联电路:
10.3 历史背景:
在19世纪,没有人将布尔代数中的AND和OR同线路中的开关串联及并联关联到一起.
甚至连计算机革命的偶像式人物查尔斯-巴贝奇也没有,他与布尔处在同一时代并且了解布尔的工作.巴贝奇先设计了差分机和分析引擎,这些在一个世纪之后都被看做是现代计算机的前身.
其实可以根据一台电报器来创建计算机,而非使用齿轮和杠杆来实现计算.
11.门
继电器像开关一样,可以串联或并联在电路中执行简单的逻辑任务.
这种继电器的组合叫做逻辑门(logic gate).
逻辑门:
逻辑门的工作方式是什么?
让电流通过或者阻止电流通过.
布尔代数与电路的关系:
香农清晰阐述了: 电子工程师可以运用布尔代数的所有工具去设计开关电路.如果你简化了一个描述电路的布尔表达式,那么你也可以简化相应的电路.
每个开关都是一个二进制数.
继电器:
继电器是什么?
继电器像开关一样,可以串联或并联在电路中执行简单的逻辑任务.这种继电器的组合叫做逻辑门(logic gate)继电器的优点:
继电器可以被其他继电器所控制,而不必由人工控制.
连接继电器是建立逻辑门的关键.
四种基本逻辑门
1.与门 AND:
两个继电器的串联被称为一个"与门".
-
电路:
符号:
三输入端与门:
3个继电器的串联---三输入端与门
- 电路:
- 符号:
2.或门 OR :
2个继电器的并联---或门
任何一个继电器有电压都可以点亮灯泡.
-
电路:
-
符号:
3. 或非门 NOR:
结果与或门相反
-
符号:
输出表:
全0为1,其余为0
4. 与非门 NAND:
和与门相反
- 符号:
- 输出表:
反向器(inverter):
开关闭合,灯泡就熄灭.
- 电路:
- 符号:
- 作用:
能将0(低电平)转换成为 1 (高电平)
2-4译码器:
由4个与门和2个反向器连接成的电路叫做2-4译码器
输入:
2个二进制位,各种组合共表示4个不同的值输出:
4个信号,任何时刻只能有一个是1 ,至于哪个是1取决于两个输入.电路:
缓冲器(buffer) :
将4个逻辑门和1个反向器组合在一起,就是原始的继电器.
也称为缓冲器.
- 符号:
- 输入输出:
- 作用:
- 输入信号很微弱的时候,可以加强信号
- 延迟信号(继电器需要几分之一秒才会被触发 )
摩根定律:
1. 摩根定律是什么?
关于命题逻辑规律的一对法则
2. 摩根定律的表达式?
3. 两组等价关系:
这两组等价关系就是摩根定律在电路中的实现
4. 摩根定律与布尔代数的关系:
摩根定律是**简化布尔表达式的一种重要手段,因此也可以用来简化电路
12. 二进制加法器
加法是算术运算中最基本的运算,如果想搭建一台计算机,首先就要造出可以计算两个数的和的器件.
12.1 二进制的加法法则:
带有前导零的形式.每个结果都是2位的值.
加法位(sum bit):
进位位(carry bit):
1+1=0,进位为1
12.2. 8位加法器真实模型:
范围:0000-0000到1111-1111 即十进制的0到255
12.3 加法器中的电路设计:
12.3.1 半加器(half adder):
- 为什么叫半加器:
半加器可以将2个二进制数相加,得出一个加法位和一个进位位.但是绝大多数二进制数是多与1位的.
半加器没有做的是: 将之前一次的加法可能产生的进位位纳入下一次运算.
-
对照:
-
电路:
-
符号:
12.3.2 全加器(Full Adder):
- 电路:
- 符号:
12.3.3 8位加法器:
- 模型:
每个Full Adder的进位输出都作为下一个全加器的进位输入.
12.3.4 16位加法器:
模型:
12.3.5 优化:
- 更快的加法器运用了被称为"前置进位"的电路来提高运算速度.
- 晶体管取代继电器.