编码:基础知识

1 前言

  本文是基于《编码》、《穿越计算机的迷雾》两部著作进行读后整理的记录性博客。对书中较为重要的内容进行归纳整理进行二次创作,略去了繁琐的讲述细节,力求简明扼要。


编码:一种由若干符号和规则组成的系统,用来向计算机表述指令。

2 正文

2.1 信息的传递

  日常生活中,我们可以通过语言与其他人进行交流,这种基于语言的信息的传递是建立在双方都能明白语言背后的含义。这对应着一整套约定俗成的语言体系,讲述者和倾听者对话语背后的含义有着一致的 “共识”。比如,为什么用 10 来代表某个物体的数目,为什么不用其他符号?原因就是你用其他符号在别人不知道这个符号的情况下,你们之间是无法进行有效沟通,也即缺乏 “共识”。编码在本文指的是一种用来在机器和人之间传递信息的方式。

  人和计算机能不能和人与人之间一样进行有效的沟通呢?考虑一下人与人之间进行沟通交流的前提是双方都能较为准确地理解各自语言中的具体含义。对任何能听见我们的声音并理解我们所说的语言的人来说,我们发出的声音所形成的词语是一种可识别的编码。那么人和计算机之间也一样,我们可以和计算机约定一种 “沟通方式”,一种双方都能 “理解” 的 “沟通方式”。


2.2 二进制

  二进制是最简单的数字系统,其中只包含两个数字:0 和 1。和我们日常使用的十进制的逢十进位类似,二进制是逢二进位。在二进制数字系统内,1+1 不在等于 2,应为二进制中只有 0 和 1,不再和十进制系统中一样。那么 1+1 应该等于 10,也就是逢 2 进位。当然二进制中的 10 和十进制中的 10 代表的意思也是不同的。

十进制:9 + 1 = 10
二进制:1 + 1 = 10   逢 2 进位,相当于十进制里的 2

  尽管二进制记数法只有两个符号,但是却可以有无穷无尽的组合。可以这么说,任何一个十进制的整数,都有一个唯一的二进制数与之相对应。比如,月亮和地球之间的距离是 384000 千米,对应的二进制数就是 1011101110000000000。

  十进制数具有不同的数位,分别是个位、十位、百位、千位等,但是在二进制里通常不需要这样细致的划分,因为二进制数一般都很长。对于单个的二进制数位,它们都只有一个称呼 “比特”,每个比特具有两个可能的值:0 或者 1。

  二进制作为最简单的数字系统,在日常生活计数是不太方便的,毕竟同样数目的物体用二进制表示数字长度更长,进位更多。但它同时也具备简单的特性,每个比特只有两种状态 0 或 1。这很容易和我们日常生活中的真与假、开与关联系起来。同时简单也就意味着具有较少的运算规则,较少的运算规则也就能够更加简便进行设计。

进制的转换
a) 二进制转换为十进制
以十进制为例,十进制下的数字可以根据数位(个十百千)进行拆分
255 = 2*100 + 5*10 + 5*1 = 2*10^2 + 5*10^1 + 5*10^0
和十进制类似,二进制也可以利用数位进行拆分,但需要注意的是这里的位不再是 10,而是 2
二进制:11111111 = 1*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0
b) 十进制转换为二进制
十进制数 N,记转换成二进制后的数为 d,以 25 为例,转换过程和二进制转十进制相反,我们需要将十进制数字转换为:
N = n_1 * 2^0 + n_2*2^1 + n_3*2^2+...
根据上式结合辗转相除法,那么转换的过程为:


25 转换后的二进制表示法为:11001(N mod 2 从下至上开始写)
N=2*n_1^{'}+r_1,n_1^{'}=2*n_2^{'}+r_2,...


2.3 逻辑与开关

  结合前面的二进制我们可以将开关的断开与闭合与二进制进行关联,用开关接通表示 1,开关断开表示 0。但需要注意的是一个真正的二进制数不仅仅只有一个比特,它可能包含了很多个比特,是一连串的 0 或 1,所以要表示一个真正的二进制数,就需要一排开关,每一个开关对应一个比特。

开关的通断对应着 1 和 0

  在中学数学中我们学习了 “与、或、非”,还有与或非三种逻辑运算符表达式计算的结果有两种可能:真(True)或者假(False)。而这也与我们的二进制类似,只有两种状态。那么我们可以利用开关的组合实现上述逻辑运算符。

  在上图所示的电路中,电路接通代表结果为真,断开代表结果为假。结合电路知识我们可以李勇串联开关的形式实现 “与” 逻辑,即只有两个开关同时接通结果才为真(电路接通),其余情况都无法接通;同样利用并联电路实现 “或”,只要一个开关接通结果就为真(电路接通);至于 “非” 的实现直接取反即可。


2.4 门与继电器

  通过前文我们已经了解到了可以用开关表示逻辑,但开关有一个很大的弊端就是只能控制单一电路,能不能用一个设备来代替开关控制其他电路,同时它又能起到接通和断开电路的作用呢?这就需要介绍一下继电器。

  在中学物理的学习中,我们了解到了电能生磁,磁也能生电。如下图所示,当连接继电器的电路接通时就触发了电磁铁,电磁铁把一个弹性金属条吸附下来,从而接通警报电路,红灯亮起。继电器是一个意义非凡的设备,它是一个开关,但是这个开关的闭合和断开是由电流控制的。当然,继电器的作用不仅限于此。

电磁继电器

继电器和莫尔斯电码
莫尔斯发明的是一种叫做电报的东西,由不在一个地方的两个装置组成,用很长的电线连接起来,如下图所示。

莫尔斯电报示意图

在这一端,是一个开关,通常称之为按键,可以控制电流的通断。而在电线的那一端,连着一个电磁铁。这样,通过按下或者松开按键,就能控制磁性的有无。
在电磁铁的上方,有一个长长的铁片——衔铁臂——安装在支架上,它可以上下自由活动。平时,也就是电磁铁没有通电产生磁力的时候,它被一根弹簧拉着,以免与电磁铁挨在一起。这样,一旦开关闭合,衔铁臂就会被电磁铁吸引;当开关松开,电磁铁失去磁性时,衔铁臂又在弹簧的牵引下回到原来的位置。
如果在衔铁臂上安装一支笔,并在笔的下面放一卷匀速前进的纸,当按下按键并迅速松开时,会在瞬间使电磁铁产生一个吸合与释放的动作,结果是笔尖在纸上打出一个点“·”;如果按键按下的时间稍长一点儿,那么,笔尖会在纸上留下一条线“—”,这称为“划”。连续地按动按键,就会在纸上留下一串由点和线组成的图案。
·\ ——\ ··\ ——\ ·\ ——
结合一张发送方和接收方都能理解的电码表,在这张表里,用点和划的组合来表示从 “A” 到 “Z” 的 26 个英文字母,以及从 “0” 到 “9” 这十个数字。
历史上第一份长途电报是在 1844 年 5 月 24 日发出的,这表明莫尔斯的发明已经具备了实用性。不过,如果线路太长,也会是个问题。正如我们已经知道的那样,电线太长,电阻就会变大。这样,在电报线路的那一头,微弱的电流将不能使电磁铁正常吸合,电报接收机也就无法接受到信息。所以,可以每隔一段距离设置一个电报中转站,派人在那里接收电报,然后再原样发往另一条线路,就这样一段一段地进行接力传递。
但这种接力传递的方式需要耗费人力,信息的传递也很繁琐。解决之道是使用继电器,如下图所示,它的主体是一个电磁铁,不过衔铁臂的下面多了一个金属触点。现在,分别从衔铁臂和金属触点上引出两根线,并串接一个电源,把这两根线作为另外一条电报线路架设到其他地方。注意,电源并不是继电器的组成部分。

继电器

它应当被放在远离电报发送端,但还可以保证电报信号能让电磁铁正常吸合的地方。当发送方过来一个 “·” 的时候,衔铁臂也短暂吸合一下,把另一条线路接通。

  继电器就像开关一样,可以串联或并联在电路中执行简单的逻辑任务。这种继电器的组合叫做逻辑门,也简称门。继电器连接的电路接通时相当于闭合了开关,对应前文开关闭合对应着二进制中的 1,类似的,继电器电路断开时相当于断开开关,对应着二进制中的 0。

  实际上,继电器也可以如下图所示连接在电路中,当继电器接通电源时,灯泡熄灭。这样的话,开关闭合,灯泡就会熄灭。以这种方式连接的继电器叫做反向器(inverter)。反向器不是逻辑门(一个逻辑门通常有两个或多个输入),尽管如此,它的用处还是很广。反向器可以用如右的专门符号来表示。反向器能将 0(低电平)转换为 1(高电平),反过来也是一样的。

  前文介绍了可以通过开关的串并联实现简单逻辑电路,同样的继电器也可以进行串并联实现相应的逻辑。就像两个开关串联一样,这两个继电器也执行了逻辑操作。只有当两个继电器都被触发的时候灯泡才会亮。这样两个继电器的串联被称为一个 “与门”。

继电器的串联
继电器的并联

  为了避免复杂的图示,电气工程师用如下专门的符号表示一个与门。

与门

  与门有两个输入端(上图中的左端)和一个输出端(上图中的右端)。与门的输入未必一定要和开关相连,而且输出也不一定只能与灯泡相连。我们真正要处理的是输入端的电压和输出端的电压。例如,一个与门的输出可以作为另一个与门的输入,如下所示。

与门作为输入

  如果我们将低电平视为 0,将高电平视为 1,那么与门的输入和输出之间的关系如下所示。

高低电平作为输入输出

  [注]:虽然我们前面一直介绍使用电路的接通与断开的两种状态与二进制进行关联,但是实际并不需要一定要将电路接通或断开,只需利用可以区分的高低电平,高电平代表 1,低电平代表 0。

  电气工程师用如下符号表示或门。它和与门的符号稍微有点相似,但是输入端的一边是弧线,像英文单词 “OR” 中字母 “O” 一样。

或门

  或门的两个输入中,只要有一个加上电压,输出就是高电平。如果将低电平看做 0,高电平看做 1,那么或门也有四种可能的组合状态。

高低电平作为输入输出

  当然我们也可以将前面的三种逻辑门进行组合使用从而实现复杂场景下的不同需求。

逻辑门的组合

小结

反向器 与门 或门

  下面再介绍两个较为常用的逻辑门。

  结合下面的电路,我们来了解一下 “或非门”。在下面这种配置中,第一个继电器的输出为第二个继电器提供电源。当两个继电器全都断开时,灯泡发光。

  如果上面继电器电路的开关闭合,灯泡就会熄灭。同样的,如果下面继电器电路的开关闭合,灯泡也会熄灭。分析上述电路的逻辑会发现,该电路的逻辑是:只有都为假(继电器电路断开)结果才为真(灯泡点亮)。而这正与我们前文介绍的或门的逻辑相反:

或门 或非门
只要有一个为真结果就为真 只有都为假结果才为真

真值表

  由于这些结果恰恰与或门相反,这个门称为 “或非门”,简称 NOR,用以下符号表示。

或非门

  除去输出部分的小圆圈,这个符号与或门非常相像。小圆圈表示 “反向”,所以或非门也可用下面的符号表示。

或非门

  下面再介绍另一种逻辑门的电路,如下所示是另一种连接两个继电器的方法。

  在这种情况下,两个输出通过并联的方式连接在一起,与或门的布局类似,但是却采用了另一种输出接法。灯泡在两个继电器电路开关全断开时被点亮。

  当上面的继电器电路开关闭合时,灯泡依然是亮的。同样,当只有下面的继电器电路开关闭合时,灯泡也依然是亮的。只有当两个继电器电路开关全闭合的时候,灯泡才会熄灭。上述电路展示了我们要介绍的另一种逻辑门——与非门。分析上述电路的逻辑,我们可以发现该电路的逻辑是:只有都为真(继电器开发闭合)时结果才为假(灯泡熄灭)。而这正与我们前文介绍的与门的逻辑相反:

与门 与非门
只有都为真结果才为真 只有都为真时结果才为假

  上述电路展示的这种逻辑门被称为与非门,或简称 NAND。与非门的符号和与门类似,但在输出部位多了一个小圆圈,意思是输出和与门正好相反。

与非门

补充介绍一下缓冲器:



缓冲器(buffer)可用如下符号表示。


缓冲器

除了输入端的小圆圈,这个符号与反向器是很相似的。很明显,缓冲器 “没有什么作用”,它的输入与输出是相同的。
缓冲器的输入与输出

缓冲器可以用于延迟信号,这是因为继电器需要一点时间才会被触发。

  如下图所示,两个输入信号经过反向器后作为与门的输入。这样的组合有时可以去掉反向器而画成如下的形式。

  实际上,带有两个反向输入的与门和或非门是等价的。

等价的表示方法

  类似的,带有两个反向输入的或门和与非门也是等价的。

等价的表示方法

3 小结

  编码:基础篇总结了这个系列基础部分的内容,主要是思想的介绍,帮助读者建立相应的思维方式,后续会结合本文的内容进行后续部分的书写。为了精简内容删减了部分较为详细的书写,仅作为整理总结。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容