分享

编码:隐匿在计算机软硬件背后的语言 笔记

 东耳果果 2019-11-19

[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 优化:

  • 更快的加法器运用了被称为'前置进位'的电路来提高运算速度.
  • 晶体管取代继电器.

13. 如何实现减法

14. 反馈与触发器

15. 字节与十六进制

16. 存储器组织

17. 自动操作

18. 从算盘到芯片

19. 两种典型的微处理器

20. ASCII码和字符转换

21. 总线

22. 操作系统

23. 定点数和浮点数

24. 高级语言与低级语言

25. 图形化革命

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多