zoukankan      html  css  js  c++  java
  • 《CODE》讲了什么?

      本书首先从黑夜中用手电筒开关灯的方式来与小伙伴交流从而引出了编码与组合的概念,并阐明了编码的本质就是交流,是一种用来在机器与人之间传递信息的方式。然后在第 2~3 章中讲述了编码与组合的应用,如电报机的莫尔斯码及布莱叶盲文,进而引出了二进制码。并在第 7~9 章详细阐述了不同进制及二进制数的概念。

      第 4~6 章,通过剖析手电筒的电路构造,将其拆分为电池,导线,灯泡,开关这四种基本组合,从而讲述了远距离如何用开关控制灯泡来滴滴答答的传递讯息。然后提到了电报机及继电器。并在第 10 章逻辑与开关中详细讲述了电报机的原理。

      亮点在于第 11~17 章,这里从逻辑门开始不断延拓上一章的内容直到一台真正的计算机诞生。

      从第 11 章开始,先把电路变形一下,,将电路的公用导线用地球来代替,将电源拆成电压输入和接地线,所有的接地线都实质上连在一起,这样继电器就只有输入端了。将一个继电器和一个上面有开关的导线封装在一起,就形成了一个带有一个输入端一个输出端的黑箱。利用这个黑箱可以构造各种逻辑门电路(我们认为只要有电压 就是 1,没有电压是 0),这之后的推演就不再依赖继电器,只要有逻辑门就够了(一旦逻辑门被构造出来,其实现便无关紧要了)。

      二进制加法在每 一位上和异或门一样,而进位和与门一样,于是一个异或门和一个与门可以完成一位的加法操作,这是一个半加器。把两个半加器与一个或门连起来可以组成一个全加器。把 n 个全加器连起来便构成了一个 n 位加法器。n 位加法器本身又可以当一个黑箱来使用:它有两个 n 位输入,一个进位输入,一个进位输出以及一个 n 位输出(加法运算的结果)。利用 2 的补码,减法很容易就可以实现,只需要一个由非门构成的求补器和一个表明符号的输入端。

      反馈(输出以某种形式再度输入系统)的引入可以带来全新的 东西。最简单的反馈是把一个继电器短接(开关在电磁铁上方)形成一个振荡器,这个电路会不断以恒定的频率在连通、开路之间变化。再加一些之后也有很大用处的辅助元件就能看到神奇的东西。

      利用逻辑门可以构造一个触发器(Flip-Flop),它有两个输入端,可以储存一位数值。输入端都为 0 是稳态。其中一个变为 1 的时候被存储的数值发生相应变化(分别会将存的值置为 1, 0),输入端再度归零的时候被存储的数值不变。这个东西可以被添加上更多的功能,比如将输入分别与一个一位输入求与后只有在那位输入为 1 的情况下输入才有效,这一位叫时钟端。

      两个输入端总是在相反的时候才有意义,因此可以被合并在一起变成一个数据端。这样我们得到了一个锁存器。锁存器上面还可以再附加一个清零端,一个预置端(分别强行让输出变成 0 或 1),这个比较容易。这是电平触发的触发器,可以将之改造成边沿触发的,即只有在时钟从 0 变成 1 的瞬间数据端的输入才有效,实现上大体是由两个触发器连起来得到的。

      下面是重点:将一个振荡器与边沿触发的触发器连到一起,输出结果与振荡器类似,但是频 率减半,这是一个分频器。分频器可以继续连接下去,得到时钟频率四分之一、八分之一……的信号。注意二进制位从 0, 1, ……变化的时候右起第二位的变化频率是第一位的一半,第三位的频率是第一位的四分之一,这些分频器的输出放到一起就是一个周期性增长的二进制数(或者将其波形图旋转 90°来看也能看出来),于是我们得到了计数器。

      我们可以通过构建一个选择器来利用 n 位信号(地址)选择总共 2^n 位的锁存器(数据)中哪一位被访问,这就是通过地址来访问存储器的基本原理。

      好了万事俱备:

      我们把存储器分成两个部分,一个部分的内容被解释成代码,另一个部分被解释成数据,计数器的输出被认为是当前应该访问的地址。按照计数器的输 出去访问存代码的存储器,取出代码并按照它来执行,代码中可以指定访问哪个地址的数据。允许一些代码在符合条件的前提下强行修改计数器内容(修改后计数器会从被修改的内容开始继续以固定周期自增 1),这就是条件跳转指令。

      这一堆元件总的来说执行以下的机器周期:按照计数器所描述的地址取指令并执行,计数器自增。带条件跳转的按顺序执行指令序列足 以计算所有可计算的东西了。就这样,傻傻的继电器活了起来。

      第18~25 章的内容是进一步的优化。从继电器到真空管再到晶体管来压缩体积提高速度,再引入总线、操作系统、编程语言技术,从ASCII码和字符转换到定点数与浮点数的运算再到可视化编程于是这台原始的继电器计算机慢慢演化成了现代计算机。

    作者:洛洛爱吃肉 出处:http://www.cnblogs.com/dongliu/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    yolov3计算mAP
    ESP32 ADC的坑
    DCNv2编译过程报错:error: identifier "THCudaBlas_SgemmBatched" is undefined
    Arduino在Lib中输出调试参数
    ESP32获取WT901CTTL/232四元数
    常用公共前端CDN库
    js / php 网站底部版权文字自动改变年份
    以管理员身份在当前目录打开命令行窗口
    【JavaScript】提取字符串里的分数,及计算平均分并与平均分比较输出
    添加谷歌翻译到你的网站
  • 原文地址:https://www.cnblogs.com/dongliu/p/5420421.html
Copyright © 2011-2022 走看看