Charles Petzold《Code》----2017.1.13 读12章

注:所有笔记均为自己的理解总结,可能并非书本原文,对错不予负责。

摘要:之前的章节教会了我们如何用计算机传递信息、如何用计算机进行逻辑判断。这一章通过使用上一章介绍的逻辑门知识,教我们如何用计算机进行加法运算。其中,介绍了异或门、半加器、全加器、8位加法器。


加法的意义:加法是计算机唯一所做的事情,因为通过使用用于加法的机器,我们还可以构造用加法来实现减法、乘法、除法以及计算房产抵押款、引导向火星发射卫星、下棋和电话计费等等功能的机器。


二进制加法机

基本的数学思想:二进制数字相加的结果是两位数,分别称为“”和“进位”。

实现加法机:

1、我们先做“进位运算”。
进位运算如下图:
这里写图片描述
同时,与门的输出如下图:
这里写图片描述
所以,我们可以用一个与门来进行“进位运算”。

2、做“和运算”。
和运算如下图:
这里写图片描述
同时,或门、与非门的输出如下图:
这里写图片描述

这里写图片描述
所以,我们可以将或门和与非门的结果再用一个与门结合起来,以完成和运算。如下图:
这里写图片描述
其实,上图有它自己的名字,称为“异或门”(Exclusive OR gateXOR),也用下图符号来表示:
这里写图片描述

3、经过以上两个步骤就能做出一个“半加器”(Half Adder)。
如下图:
这里写图片描述
也可简单的表示成如下图:
这里写图片描述
其中的方块就是半加器。它可以把两个二进制位A和B相加,从而得到一个和输出(简称S)和一个进位输出(简称CO)。但是半加器不能够把前一步的进位加到本次运算中。

4、不仅将相应的两个二进制位相加,还要加上前一列的进位,这就是全加器(Full Adder)。
要把3个二进制数相加,需要按如下方式把两个半加器和一个或门连接起来:
这里写图片描述
原理:先从最左边第一个半加器的A输入和B输入开始,其输出是一个和及相应的进位。这个和必须和前一列的进位输入(简称CI)加起来,然后把它们输入到第二个半加器。第二个半加器的和输出是最后的和。两个半加器的进位输出又输入到一个或门,或门产生了本次加法的进位输出。你可能会想这里还需要一个半加器,这当然是可行的。但当你把所有的可能情况考虑完,你会发现两个进位不可能同时为1。当两个输入不能同时为1时,或门已足够用于表示两个进位的加法,此时或门和异或门的功能是相同的。
上图可简化表示为下面的方块图,称为“全加器(Full Adder)”:
这里写图片描述

5、八位加法器。
一个八位加法器需要144个继电器。每个与门、或门、与非门都需要2个继电器,所以,一个异或门需6个继电器。一个半加器由一个异或门和一个与门构成,所以它要8个继电器。1个全加器需要两个半加器和一个或门,所以它要18个继电器。对于8位二进制加法机而言,共需8个全加器,因而总共是144个继电器
这里写图片描述

这里写图片描述

8位加法器的另一种画法:
这里写图片描述

6、16位加法器:
这里写图片描述


如何看待本章介绍的加法机:
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
书的作者Charles Petzold是著名的《Programming Windows》的作者。全书风趣幽默,生动活泼,充满生活中的实例和直观的插图。虽以“编码”为题,却是以“编码”为主线,深入浅出地讲解了逻辑代数、离散数学、数字电路、微机原理、汇编语言、编译原理和操作系统等计算机原理方面的基础知识。与计算机专业课本相比,没有艰涩的定义和描述,充分地把抽象的内容形象化了。它可以被定位为大众化的计算机科普书籍,然而与一般的国内计算机科普物相比,它的信息量、专业程度绝对是高一个层次的。因此很适合对计算机有一定应用基础,有兴趣了解一点计算机机理的朋友。同时也可作为学习数字电路、微机原理等课程的启发性引论。   对于计算机专业学生,我觉得此书同样非常值得一看。就个人体会,举一二例:在看到二进制的加减实现那块,虽然自己原先清楚那些概念和方法,但是基于死板的公式和法则的,没有一个直观的体会。而在《CODE》中,分别釆用实物、简单电路、十进制数进行类比,逐步揭示了补码、加法器等机理,可谓温故而知新。阅书中对汇编语言在各个章节循序渐进的引入,才发现原来汇编那些“古怪”的逻辑竟是如此的自然。而书中对数字电路的阐述完全是基于计算机实际应用的,从逻辑电路到触发器、存储器,直至微处理芯片,每一步在讲解电路原理的同时都辅以如何达到应用目的,让人不会觉得空洞和抽象。   此书比较注重内容的历史连贯性,各个章节都提及了相关技术的发展史,让我们认识到数字技术与计算机的发明及应用是一个逐级推进的历史过程。同时一些趣闻轶事也使我们开怀一笑。另一个特点是书中的不少东西是可以亲自实践的(通过实物或软件仿真),比如一些简单数字电路的实现。这很可能激发一些朋友自己造一块CPU的冲动。   高手高就高在把深奥的理论知识平民化了。总之,我觉得如果你是计算机专业学生,了《CODE》,也许会发现原来还有一些简单的道理自己并不清楚,有茅塞顿开之感。而对不了解计算机的人来说,你将会豁然开朗——原来计算机并不神秘!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值