《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码和字符转换到定点数与浮点数的运算再到可视化编程于是这台原始的继电器计算机慢慢演化成了现代计算机。
《CODE》讲了什么?的更多相关文章
- 使用TypeScript拓展你自己的VS Code!
0x00 前言 在前几天的美国纽约,微软举行了Connect(); //2015大会.通过这次大会,我们可以很高兴的看到微软的确变得更加开放也更加务实了.当然,会上放出了不少新产品和新功能,其中就包括 ...
- IDEA/Eclipse简易化使用的几个技巧
IDEA 易用性计较 代码自动提示,取消大小写限制 Ctrl+/生成的"//" 注释,不能跟代码块自动对齐 Eclipse 优化技巧目录 1.更改编码,统一全局的字体编码格式 2. ...
- 比较windows phone程序启动和android程序启动原理
windows phone 程序是如何启动的了,他和android程序有什么区别,我们重点从native code 层面来分析 在windows phone 程序启动的时候是: 在XAML中使用应用程 ...
- 使用TypeScript拓展你自己的VSCode
转自:http://www.iplaysoft.com/brackets.html使用TypeScript拓展你自己的VSCode! 0x00 前言在前几天的美国纽约,微软举行了Connect(); ...
- Mybatis原理和代码剖析
参考资料(官方) Mybatis官方文档: https://mybatis.org/mybatis-3/ Mybatis-Parent : https://github.com/mybatis/par ...
- Solution -「SPOJ-VCIRCLES」Area of Circles
\(\mathcal{Description}\) Link. 求平面上 \(n\) 个圆的并的面积. \(n\le50\),可能被圆覆盖的横纵坐标区域在 \([-10^4,10^4]\) ...
- 第13讲 | 套接字Socket:Talk is cheap, show me the code
第13讲 | 套接字Socket:Talk is cheap, show me the code 基于 TCP 和 UDP 协议的 Socket 编程.在讲 TCP 和 UDP 协议的时候,我们分客户 ...
- 转: Source Code Lookup in Eclipse(主要讲的是java的)
Source Code Lookup in Eclipse https://www.intertech.com/Blog/source-code-lookup-in-eclipse/
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
随机推荐
- Socket原理
一.Socket简介 Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换. 几个定义: (1)IP地址:即依照TCP/IP协议分配给本地主机的 ...
- [HOWTO] Install Sphinx for A Script Pro
Hi, Here's a small howto on installing Sphinx Search (http://sphinxsearch.com/) and configuring it t ...
- php开发学习目录
最近有个项目需要使用php,没办法学习吧 本文不适合没有任何语言的初学者,也不适合 php熟练者.只是个人工作中需要的总结 目录 一.环境安装 1.1 apache 简介安装使用等 1.2 php 5 ...
- Dao操作的抽取,BaseDao
Dao操作通用的步骤: 0. 写SQL语句 1. 获取连接 2. 创建stmt 3. 执行sql a) 更新 b) 查询 4. 关闭/异常 代码: BaseDao /** * 通用的dao,自己写的所 ...
- Java Web开发介绍
转自:http://www.cnblogs.com/pythontesting/p/4963021.html Java Web开发介绍 简介 Java很好地支持web开发,在桌面上Eclipse RC ...
- xml格式化写入文件
参考xml文件地址:http://cloudprint.cainiao.com/template/standard/101 代码: package main import ( "encodi ...
- Yeoman:适合现代Web应用的现代工作流
Yeoman:适合现代Web应用的现代工作流 Yeoman是Google的团队和外部贡献者团队合作开发的,他的目标是通过Grunt(一个用于开发任务自动化的命令行工具)和Bower(一个HTML. ...
- google yeoman
Yeoman是Google的团队和外部贡献者团队合作开发的,他的目标是通过Grunt(一个用于开发任务自动化的命令行工具)和Bower(一个HTML.CSS.Javascript和图片等前端资源的包管 ...
- codeforces Unusual Product
题意:给你n*n的矩阵,里面是1或0,然后q次询问,如果操作数为1,那么就把x行的数0变成1,1变成0:如果操作数为2,那么在x列上的数0变成1,1变成0:如果是3,输出: 思路:在求的时候,对角线上 ...
- 一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等...
计算机主机网关的作用是什么? 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关.当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声 ...