《Code:The Hidden Language of Computer Hardware and Software》阅读精粹

关于作者

Charles Petzold 是Windows编程界的一位大师,1994年作为仅有的七人之一,被授予Windows Pioneer奖。其著作Programming Windows是尽人皆知的Win32 API编程经典,是学习Windows编程的必读之作。

此书作者采用的叙述方式奇特却又如此自然,他首先从历史的角度审视了计算机技术的发展脉络,继而自底向上地奖计算机体系结构方面的知识娓娓道来。(引自译者序—薛佟佟)

开始

此书打算从每一章的角度提取重点作为记录。

01 至密亲友

这一章介绍了编码的由来,和莫尔斯电码的发明,这里看似与计算机毫无关系,但是对于深入了解计算机软硬件内部结构以及隐匿在其背后的语言将大有裨益(背后的语言就为二进制,而二进制其实就是一种编码)。

编码:指一种又来在机器和人之间传递信息的方式,编码就是交流。

莫尔斯电码:一种表示26个字母的编码,如果利用手电筒传递信息,通过短闪和长闪来制作编码,而其最著名的就属SOS,SOS并不是一个缩写,而是一个易记得莫尔斯编码序列,即为短短短长长长短短短。

02 编码与组合

就01中我们总结的莫尔斯编码,可以把点(短闪)视为0把划(长闪)视为1,总结为二进制我们会发现规律:

用表格列出则为:

点划的数目 码子的数目
1 2^1 = 2
2 2^2 = 4
3 2^3 = 8
4 2^4 = 16
5 2^5 = 32

03 布莱叶盲文与二进制码

布莱叶盲文中,每个在书写中用到的符号——具体来说就是字母、数字和标点符号——都被编码成了2*3的点码单元中的一个或者多个凸起的点。通常用数字1-6来进行编码。而每个点也可以有两种表示方式为:不凸起和凸起,所以一共可以表示 $ 2^6 = 64 $ 种编码组合

04 手电筒的剖析

  • 电路就是一个环路
  • 原子由三种粒子构成:中子(neutron)、质子(proton)和电子(electron)
  • 导线越粗,阻抗越低。粗一些的导线可以使更多的电子顺畅的通过线路
  • 欧姆定律: 其中,I用来表示电路中的电流,E用来表示电压,R表示电阻。
  • 如果导线电阻较低的话,它将会变热并且发光。这就是白炽灯发光的原理。
  • 瓦特使功率(p)的计量单位,公式为:

05 绕过拐角的通信

  • AWG(American Wire Gauge)美国线径标准,AWG越小,导线越粗,电阻越小

06 电报机和继电器

继电器:当输入的电流触发了电磁铁,电磁铁把一个弹性金属条吸附下来,就像闭合了开关一样,使电流可以从接口输出。
img

07 我们的十个数字

数学又称为“通用语言”,因为全世界几乎都是用1~9来描述数字的。
罗马数字:M表示1000,D表示500,C表示100,L表示50,X表示10,V表示5,I表示1。罗马数字都是由这些字母所组成的。
现如今的数字通用系统为阿拉伯数字,与其他数字系统最重要的区别为有“0”,从而支持了计数法,可以将25、205和250区分开来。0也简化了与位置无关的运算,尤其是乘法和除法。

08 十的代替品

如果人类的手指不是十个的话,我们的计数方式可能会大不相同。
而对于计算机来说最重要的发明就是二进制,而电线就可以表示二进制,比如有电流就为1,无电流就为0。
同样电报继电器也是一样的道理。而bit也为表示二进制而发明。

09 二进制数

bit被看做是组成信息块的基本单位。
要把二进制看为一种表示信息的方式,而不是看待成数字。一个二位的二进制数可以表示四种信息,一个三为的二进制数可以表示8种信息。

10 逻辑与开关