Charles Petzold《Code》----2017.1.13 读12章
来源:互联网 发布:水平垂直奇偶校验算法 编辑:程序博客网 时间:2024/05/22 12:38
注:所有笔记均为自己的理解总结,可能并非书本原文,对错不予负责。
摘要:之前的章节教会了我们如何用计算机传递信息、如何用计算机进行逻辑判断。这一章通过使用上一章介绍的逻辑门知识,教我们如何用计算机进行加法运算。其中,介绍了异或门、半加器、全加器、8位加法器。
加法的意义:加法是计算机唯一所做的事情,因为通过使用用于加法的机器,我们还可以构造用加法来实现减法、乘法、除法以及计算房产抵押款、引导向火星发射卫星、下棋和电话计费等等功能的机器。
二进制加法机:
基本的数学思想:二进制数字相加的结果是两位数,分别称为“和”和“进位”。
实现加法机:
1、我们先做“进位运算”。
进位运算如下图:
同时,与门的输出如下图:
所以,我们可以用一个与门来进行“进位运算”。
2、做“和运算”。
和运算如下图:
同时,或门、与非门的输出如下图:
所以,我们可以将或门和与非门的结果再用一个与门结合起来,以完成和运算。如下图:
其实,上图有它自己的名字,称为“异或门”(Exclusive OR gate 或 XOR),也用下图符号来表示:
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位加法器:
如何看待本章介绍的加法机:
- Charles Petzold《Code》----2017.1.13 读12章
- Charles Petzold《Code》----2017.1.22 读13章(非常聪明!)
- Charles Petzold《Code》----2017.1.3 读第4章
- Charles Petzold《Code》----2017.1.3 读5章
- Charles Petzold《Code》----2017.1.4 读6章
- Charles Petzold《Code》----2017.1.5 读7章
- Charles Petzold《Code》----2017.1.5 读8章
- Charles Petzold《Code》----2017.1.5 读9章
- Charles Petzold《Code》----2017.1.9 读11章(非常重要!)
- Charles Petzold《Code》----2016.12.28 读1~3章
- Charles Petzold《Code》----2017.1.6 读10章(非常精彩!)
- Programming Windows by Charles Petzold (bigtoog翻译)
- C( ++ ,sharp ) Programming.Windows[Charles.Petzold]
- <<windows程序设计>> Charles Petzold VS 王艳平
- 【Windows 程序设计 (美)Charles Petzold 第5版 珍藏版】
- 图灵访谈之三十九:对话《图灵的秘密》作者Charles Petzold(中文版)
- 读Petzold-编码的奥秘-记录
- charles
- SHA1 安全加密算法 (微信分享获取签名时使用)
- JDBC事务、JTA(Java Transaction API)事务、容器事务
- Linux命令基本格式及目录处理命令
- Glassfish部署cxfwebservice,axis调用报错的问题
- 读写分离
- Charles Petzold《Code》----2017.1.13 读12章
- (一)1.3Java程序运行机制及运行过程
- Git远程分支和refs文件详解
- 项目管理所思所想
- OGRE之坐标系、向量与转换
- 全国公共资源服务实现全面电子化倒计时5个月的期待
- 微信小程序之简介(一)
- android:layout_weight 属性的工作原理
- C语言数据类型