《编码:隐匿在计算机软硬件背后的语言》读书笔记整理总结

前言:

  1. 在前辈的推荐下看了这本书。看完之后唯一的想法是:如果在学《计算机组成原理》这么课之前看到这本书就好了!不过种一棵树最好的时间是十年前,其次是现在。
  2. 考研初试复习了《计算机组成原理》这门课(尽管复习期间最头疼的就是它)。正因为有“一丢丢”计组的基础,所以读这本书时经常会有一种“恍然大悟”的感觉。
  3. 书中有大量的电学知识,一些电学知识我是略过粗看的。
  4. 本篇文章是主要整理一下阅读时在书中圈画的知识 + 考研初试时整理的计组的笔记。

第一章:至密亲友
  1. 编码是什么?指一种用来在机器和人之间传递信息的方式
    比如人类发出的声音,书本上的字符形式,手电筒的闪烁,英语词汇,空气中的比划,手语,布莱叶盲文等都是一种编码的形式
  2. 编码就是交流
  3. 编码的应用:各种类型的编码用在计算机里存储和传递数字、声音、音乐、图片和电影,然后处理和呈现一切用于和人类的沟通的信息。
  1. 莫尔斯电码(Morse Code):使用点dot和划dash组成。
    在这里插入图片描述
    在这里插入图片描述
    附上一张大二学摩尔斯电码的笔记图~
    在这里插入图片描述

第二章:编码与组合
  1. 各种类型的信息都有自己的一套编码。双方都熟记编码之后才能交流。接受编码、解码费事费力。但如何表示所有类型的信息?如何让双方很快地解码然后信息快速发送出去?
  1. 码字的数目= 2 编码的位数
  2. 莫尔斯码也被称作二进制码。因为此编码的组成元素只有两个—“点”和“划”。

第三章:布莱叶盲文与二进制码
  1. 布莱叶盲文是为了便于盲人阅读而发明的一种编码。无须刻意记住关于它的什么内容,而要从中归纳出编码的一些性质。
  1. 布莱叶盲文:字母、数字、标点符号都被编码成2*3 的点码单元中的一个或几个凸起的点。点用1-6的数字编号,共64种码字。

六位二进制码(实际上是六个点)所能表示的全部64种可能的编码都罗列了一遍。而这64种编码中很大一部分在上下文中有着双重含义。尤其注意数字标识符,他们改变了后面编码的意义。这样的编码通常被称作“优先码”(precedence codes)或“换挡码”(shift codes)。它们改变着作用域内的编码的含义,直到作用域结束。
大写字母标识符表示紧随他的字母应该被译为大写。类似的这样的编码叫做“逃逸码”(escape codes)。逃逸码使对编码单调的、一成不变的解析转入一种新的解析方式中。

在这里插入图片描述

第四章:手电筒的剖析
  1. 所有物质—我们能感知到的事物----都是由**原子(atom)**构成的。每个原子又有三种粒子构成:中子(neutron)、质子(proton)、和电子(electron)。中子和质子被束缚在原子核内,而电子在围绕着原子核旋转,犹如行星绕太阳系旋转一样。
  2. 质子和电子都具有带电荷(charge)的性质,且性质相反。
  3. 当质子和电子在数目相同的条件下共存时,它们都处在最稳定、最和谐的状态,如果质子和电子之间出现失衡现象,他们就会试图进行自我修复。原子核中的质子被一种力量束缚到一起,这种引力要强过同性电荷之间的斥力,我们称之为强力(strong force)。强力可能引起原子核分裂,而核能就是由此产生的。
  4. 在风暴中,底层云聚集了大量的电子二顶层云失去大量电子,最后一道闪电划过一切又回归了平衡。闪电大量电子从一段快速到另一端所形成的。
  5. 一个原子电子的数目和质子数目相同。但在某些情况下,电子可能从原子中脱离,这是电流产生的原因。
  6. 电路中的电子不断地从一个原子移动到下一个原子,就形成了电流。
  7. 电池:使电子流动
  8. 导体Conductor:最好的导体是铜、银、金;在最外电子层中只含有一个电子,容易逃逸。
  9. 半导体Semiconductor:锗元素和硅元素;“半导体”不是导电性能是导体的一半,而是它们的导电系数可以通过多种方式操控
  10. 绝缘体Insulator:橡胶和塑料都是很好的绝缘体;布料和木头在干燥的空气中也是很好的绝缘体;
  11. 导线越长,阻抗越高;导线越粗,阻抗越低(粗一些的导线可以使更多的电子顺承的通过线路)。
  12. 开关只能闭合和断开,没有介于二者之间的状态,类似于二进制编码

第五章:绕过拐角的通信

当手电筒的光无法达到朋友的卧室中,怎样与他们进行无声的交流呢?— 电路


第六章:电报机与继电器

全球性即时通信 + 远距离通信

  1. **电报(telegraph,远距离书写)**原理:在线路的一段采取某些措施,是线路的另一端发生某种变化。
  2. 电报机,就是用以发送和接收电报的设备。1835年美国画家莫尔斯经过3年的钻研之后,第一台电报机问世,莫尔斯成功地用电流的“通”“断”和“长短”来代替了人类的文字进行传送,这就是鼎鼎大名的莫尔斯电码
  3. 电磁铁是电报的基础。
  4. 电报机最大的问题就是长距离的导线带来的电阻,尽管一些电路使用使用高达300伏的电压,是有效距离超过300英里,但是线路还是不能无限延长。— 设置一个中继系统
  5. 继电器:传进来的电流驱动电磁铁拉动金属杆,金属杆有作为一个开关的组成部分,而这个开关连接着电池和输出电路。通过这种办法,输入的较弱的电流就被“放大”为较强的电流。(电流被“放大”)
  6. 继电器是一个意义非凡的设备。当然它是一个开关,但这个开关闭合和断开不是由人为的来操作的,而是由电流来控制的。甚至可以组装出一部近乎完整的计算机!
    在这里插入图片描述
    在这里插入图片描述

第七章:我们的十个数字

0,1,2,3,4,5,6,7,8,9

  1. **digit(数字)**这个词有三种意思: 手指、脚趾、数字
  2. 阿拉伯数字系统:和位置有关-位权

第八章:十的替代品
  1. 对人类而言,10是一个非常重要的数字。(因为10是我们拥有的手指或脚趾的数目)
  2. 人类已经适应了以10位基数的数字系统,但是只能用十进制来计数吗?如果像卡通人物一样每只手只有4根手指会怎样?— 八进制数字系统
  1. 二进制:是最简单的数字系统,在算术和电子技术之间架起了一座桥梁。二进制和计算机之间有紧密的联系。
  2. 二进制只有0、1,可以代表开关、电流是否通过、灯泡是否发亮、继电器闭合还是断开。
  3. 二进制数:使用 bit 代替 binary digit

第九章:二进制数

只要信息能转换成两种或多种可能性的选择,就都可用比特来表示。

  1. 二进制每一位,被称为比特位(bit)
  2. 1比特是可能存在的最小信息量
  3. 编码数量 = 2比特位
  4. 比特可以表示文字、图片、声音、音乐、电影、产品编码、胶片速度、影评结果、军队入侵以及心爱人的意图。
  5. 用比特表示信息所要做的就是计算有多少种可能性罢了。比特位越多,所能表示的不同可能性就越多。
  6. 每增加一个比特位,就会将编码的数量增加一倍。
  7. 奇偶校验(是一种检查错误和一致性的方法):奇校验(一组比特位中含有奇数个1)
  8. 比特是数字

第十章:逻辑与开关
  1. 乔治·布尔发明了一种代数,这种代数看上和传统代数十分相似,而且运算规则也十分相似。在传统代数中操作数(通常为字母)代表数字,算子(通常为“+”和“×”)则用来指示这些数字之间如何运算。传统代数是处理数字的,布尔的天才之处在于他把代数从数的概念中抽离出来使其更加抽象。在**布尔代数(boole’s algebra)**中,操作数不是数字而是类(class)。简单来说,类就是一个事物的群体,后来也被称为集合(set)。
  2. 布尔代数中,类的计算使用交集、并集计算,1表示全集,0表示空集。
  3. 交集、并集、从全集去掉某些元素:可用OR、AND、NOT表示。
  4. 映射到电路中的表示:AND:串联;OR:并联
    电路中使用开关的原理,可以制造出电报机,从而可以演变制造出计算机。

第十一章:门

继电器的组合 叫做 逻辑门

  1. 逻辑门的工作方式非常简单—让电流通过或者阻止通过
  2. 继电器像开关一样,可以串联或并联在电路中执行简单的逻辑任务。这种继电器的组合叫做 逻辑门。
  3. 继电器是通过 放大微弱信号来生成强信号
  4. 继电器可作为一个电流控制而非人工控制的开关
  5. 电路是有缓冲器、反向器、四种逻辑门或其他逻辑门组成的复杂电路。
  1. 与门AND:2个继电器串联
    在这里插入图片描述
    三输入端与门:
    在这里插入图片描述
  2. 或门OR:2个继电器并联
    在这里插入图片描述
  3. 或非门NOR:(与OR相反 )
    在这里插入图片描述
  4. 与非门NAND:(与AND相反)
    在这里插入图片描述
  5. 反向器:可以将低电平转换为高电平(即0变为1)
    在这里插入图片描述
  6. 缓冲器
    在这里插入图片描述
    缓冲器的特点是“什么都不做”,其输出和输入是相同的:当输入信号很弱时,可以使用缓冲器,这是因为这也正是多年前继电器被用于电报当中输入输出的原因。此外,缓冲器也可用于延迟一个信号,这是因为继电器可能要求多一点儿动作时间,如1秒的几分之一才被触发。

第十二章:二进制加法器
  1. 层层组合:继电器 → 逻辑门 → 加法器
  2. 半加器 → 全加器 → 8位加法器 → …
    在这里插入图片描述
  3. 当然现代计算机已经不使用继电器了,后来使用过真空管,现在使用的是晶体管,但是工作方式和继电器是基本相同的。继电器 → 真空管 → 晶体管

第十三章:如何实现减法

把减法运算变成加法
在这里插入图片描述

“波洛尼厄斯”:既不向别人借钱,也不借钱给别人的人。
向人告贷,容易养成懒惰的习惯;把钱借出去,往往不但丢了本钱,还失去了朋友。


第十四章:反馈与触发器

一个能计数的电路必定需要触发器(有记忆力)

  1. 振荡器:对于反向器而言,当输入为0时,输出为1;输入为1时,输出为0。在电路中闭合开关会使反向器中的继电器间断地闭合和断开。如果去掉开关,可以使反向器连续地工作,如下图示:
    在这里插入图片描述
  2. 所有计算机都靠某种振荡器来使其他部件同步工作。振荡器有时称为时钟(clock),因为通过对振荡次数记数还可确定时间。我们把振荡器从某个时间的输出开始,经历一段变化又回到同样输出的这一段间隔称为振荡器的一个循环(cycle),一个循环所需要的时间称为振荡器的周期。
    在这里插入图片描述
  3. 触发器电路可以保持信息,换句话说,它有记忆性。它可以“记住”最近一次是哪个开关先闭合的。
    在这里插入图片描述
  4. 可以进一步构成锁存器。锁存器不同于触发器,它不在锁存数据时,输出端的信号随输入信号变化,就像信号通过一个缓冲器一样;一旦锁存信号起锁存作用,则数据被锁住,输入信号不起作用。锁存器也称为透明锁存器,指的是不锁存时输出对于输入是透明的。

第十五章:字节与十六进制

在前面的章节中,加法器、锁存器以及数据选择器的输入和输出形式都是8位的数据流,即:数据路径的位宽为8

  1. 字节Byte:(古)表示某一数据路径上的位数(仅)表示一组8比特数据半字节:4比特
  2. 8作为比特率的尺度重要性:数字可以按照BCD方便的保存 ;全世界大部分书面语言的基本字符数少于256 ;字节也适合表示黑白图像中的灰度值(256种)
  3. 二进制 十进制 十六进制 八进制 之间的转换
1. 其他进制转为十进制:按位权展开(×各自的基数)
2. 十进制转为其他进制:除基
3. 二进制转为八进制:每3比特看做一组
4. 二进制转为十六进制:每4比特看做一组

在这里插入图片描述

第十六章:存储器组织

存储器:记录信息

  1. 电报继电器以一定的形式组织起来构成逻辑门,再形成触发器就具备了保存信息的能力一个触发器只能保存一位信息
  2. 锁存器:存储进去的数据就好像被锁住了一样
  3. 8个1位锁存器,3-8译码器,8-1选择器构成的一个8×1RAM,如下图所示:
    在这里插入图片描述
    这种锁存器的配置有时也称为读/写存储器,但通常叫作随机访问存储器RAM。称它为存储器是因为它能保存信息,称为读/写存储器是因为可以在每个锁存器中保存新的数据(也就是写数据),同时还可以查看每个锁存器中所保存的数据(也就是读数据)。称它为随机访问存储器是因为通过简单地改变地址输入就可以从8个锁存器中的任意一个读出或写入数据。相比之下,其他类型的存储器必须顺序读出—也就是,在可以读出存储在地址1 0 1的数据之前,必须读出存储在地址1 0 0的数据。
    可以将多个8×1RAM构成一个整体的RAM,两种组合思路:增加数据宽度(数据线),增加地址线宽度。
  4. 为什么RAM具有易失性
    如果一个装满65 536字节的6 4 K×8 RAM阵列被关掉电源,将会发生什么情况呢?所有的电磁铁将失去磁性,所有继电器的触点将回到未触发状态, RAM中的内容也将永远丢失。这就是随机访问存储器也称为易失性存储器的原因,它需要恒定的电源来保持其中的内容。

第十七章:自动操作

编写程序来让 加法器自动完成数据输入和计算

  1. 用来累加多个数的锁存器成为累加器(accumulator)
  2. 概念:操作码(又叫指令码 指示电路要执行某种操作);控制信号(时钟 清零 写 选择)取指令,执行 。
  3. 一台数字计算机 = 处理器 + 存储器 + 输入设备 + 输出设备
  4. 机器语言、汇编语言

处理器可以响应的操作码(如指装载和存储的1 0 h和11 h)叫作机器码,或机器语言。之所以用“语言”这个术语是因为机器码类似于可读/写的人类语言可被机器理解和响应。还有一种一种计算机程序设计语言,称作汇编语言。它是全数字的机器代码和指令描述性语言的综合,且存储器地址用符号表示。汇编语言的每条语句都对应于机器代码的特定字节。


第十八章:从算盘到芯片
  1. 存储器:用来存储程序代码和程序执行中产生的数据。这些指令在存储器中是顺序存放的,而且可以由程序计数器进行寻址,但允许条件跳转。— “存储程序

冯诺依曼提出:计算机内部应该使用二进制数;计算机中应该拥有尽可能大容量的存储器,这些存储器应该用来存储程序代码和程序执行中产生的数据;这些指令在存储器中是顺序存放的,而且可以由程序计数器进行寻址,但允许条件跳转。这就是存储程序概念(stored-program concept)

  1. 最大时钟频率/主频:决定了执行一条指令所需要的时间
  2. 芯片:指内含集成电路的硅片,体积很小,常常是计算机或其他电子设备的一部分。集成电路实体往往要以芯片的形式存在。

某种意义上,所有数字计算机都是相同的。如果一个处理器的硬件能做别的处理器做不了的,那么别的处理器可以用软件实现,最终它们能做同样的事情。

  1. 以下三个指标经常用来作为微处理器相互比较的标准
  1. 处理器的数据通路的宽度。
  2. 时钟频率是可连接到微处理器并能运行的振荡器的最大频率。时钟频率决定了每一条指令的执行速度。
  3. 可寻址空间大小。

第十九章:两种典型的微处理器
  1. 8080微处理器:8位 6000个晶体管,2MHZ 64KB 单芯片 40个管脚 (3个电源电压2个同步时钟输入16个寻址的输入信号8个输入输出信号10个控制信号)
  2. 6800微处理器:有一个16位程序计数器PC、一个16位堆栈指针SP、一个8位状态寄存器(作为标志)以及两个8位累加器A和B;有一个16位索引寄存器(indexregister),可用来保存一个16位地址
  3. 现代处理器使用了一些技术用来提高速度,其中之一是流水线技术处理器在执行一条指令的同时读取下一条指令。由于转移指令会改变执行流程,实际上这样达不到预期效果。现在的处理器还包含一个Cache(高速缓冲存储器),它是做在处理器内部的快速RAM阵列,用于保存最近执行的指令。因为计算机程序经常执行一些小的指令循环,因而Cache可以避免这些指令重复装载。所有这些速度提升措施都需要在处理器中有更多的逻辑器件和晶体管
  4. 第一个是Call(调用)指令Call指令与Jump指令的不同之处在于:前者把一个新值装入到程序计数器PC中,处理器保存PC中原来的地址,保存在哪里?当然,在堆栈中。这种策略意味着Call指令可有效地保存“程序从哪里跳转”的标记。处理器最终可利用此地址返回到原来的位置。这个返回指令叫Return。Return指令从堆栈中弹出两个字节,并把该值装载到PC中。
  5. 微处理器是怎样与外围设备(对于连接到微处理器而不是存储器的东西的称呼)进行通信的呢?外围设备具有与存储器相似的接口,微处理器可通过对应于外设的具体地址来对外设进行读写。在有些微处理器中,外围设备实际上占用了通常用来寻址存储器的地址,这种配置叫作内存映像I/O。然而在8 0 8 0中,在65536个正常地址外还有256个附加地址专门为输入输出设备预留,这些就是I/O端口(I/O Port)。I/O地址信号为A0~A7,但I/O访问与存储器访问不同,由8228系统控制芯片锁存的信号来区分。
  6. RISC精简指令集计算机指令都是等长的;只有加载和保存两种指令能访问存储器;尽量简化指令的操作;设置了大量的寄存器

第二十章:ASCII码和字符转换
  1. 存储器唯一可以存储的形式是比特
  2. 用比特来表示数字和机器码。那如何存储文本呢?ASCII码
  1. 数字计算机中唯一可以存储的是比特
  2. ASCII码(American Standard Code for Information Interchange)美国信息交换标准码;7位编码
  3. 扩展的ASCII码:8位编码
  4. Unicode(统一化字符编码标准)16位编码,每一个字符需要2个字节;用于世界上所有语言文字

当数字以文本流的身份出现时,是以ASCII编码的。和该数本身表示的含义无关。也就是说我们平时从键盘输入一个数字(0-9)都是ASCII码形式的。
在这里插入图片描述


第二十一章:总线

一台计算机包括:中央处理器、存储器、输入/输出设备等。这些部件按照功能被分别安装在两个或更多的电路板上。这些电路板通过总线bus通信。

  1. 总线是数字信号的集合,这些信号被提供给计算机上的每一块电路板并供电。
  2. 信号分为四类:地址信号 ;数据输出信号 ;数据输入信号 ;控制信号
  3. 数据输入输出信号决定所存储的数值的大小
  4. 微处理器不能直接从磁盘读取数据,需要将所需的数据从磁盘调入内存(随机访问存储器)。磁盘上的数据以文件files作为实体来存放的。
  5. 磁带:只能顺序访问

第二十二章:操作系统
  1. 操作系统是很多软件构成的庞大程序集合 包括文件系统
  2. 功能:利用命令和实用程序对文件进行基本操作将程序加载到内存中并且运行、让程序方便地访问计算机硬件
  3. 只读存储器ROM:存放一小段引导程序,操作系统的其他部分可以通过这段代码的自举操作被高效的引导

第二十三章:定点数和浮点数
  1. 浮点格式是基于科学计数法的,它是存储极大或极小数的理想方式
  2. IEEE浮点数的两种基本格式:单精度格式和双精度格式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

第二十四章:高级语言和低级语言

使用机器码编写程序 就如同用牙签吃东西,伸出手臂费半天劲刺向食物,但每次都只取到小小的一块。用这种低级语言编写程序既费时又费力。所以人们想出了一种效率更高的编程方法-使用高级语言

  1. 汇编语言的助记符和机器语言是一一对应的
  2. 汇编语言存在“不可移植性
  3. 程序设计语言中的变量名实际上对应内存的一个存储单元。在程序中是通过名字来访问该存储单元的,而不是直接使用存储单元的地址值。
  4. 指针本质:数字化描述的内存地址

第二十五章:图形化革命

**用户接口 (User Interface)**是人机交互的核心。

  1. 像素pixels:屏幕是一个巨大的矩形阵列,阵列的每个元素都是一个点,这些点称为像素。
  2. 每个像素所赋予的比特数 也称为 色深或色彩分辨率
  3. 颜色数= 2每个像素所赋予的比特数
  4. 计算机图像的两个分支:矢量和光栅。
  1. 矢量图形:是CAD计算机辅助设计 所应用的领域;其一般转化为图元文件格式以存放到文件中。
  2. 光栅图形(也称为 位图):阵列中的一个单位对应着输出设备上的一个像素点
  1. 位图可能很大-数据压缩
  1. 无损压缩:压缩过程是可逆的;
  2. 有损压缩:不可逆;可压缩图像,但不可压缩电子报表或文字处理文档

参考文章:

  1. 《编码:隐匿在计算机软硬件背后的语言》读书笔记
  2. 《编码》读书笔记:从无到有构建计算机系统
  3. 我的考研初试计组整理笔记
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章