四位计算机的原理及其实现

你是否想过,计算机为什么会加减乘除?或者更直接一点,计算机的原理到底是什么?

Waitingforfriday有一篇详细的教程,讲解了如何自己动手,制作一台四位计算机。从中可以看到,二进制、数理逻辑、电子学怎样融合在一起,构成了现代计算机的基础。

一、什么是二进制?

首先,从最简单的讲起。

计算机内部采用二进制,每一个数位只有两种可能"0"和"1",运算规则是"逢二进一"。举例来说,有两个位A和B,它们相加的结果只可能有四种。


这张表就叫做"真值表"(truth table),其中的sum表示"和位",carry表示"进位"。如果A和B都是0,和就是0,因此"和位"和"进位"都是0;如果A和B有一个为1,另一个为0,和就是1,不需要进位;如果A和B都是1,和就是10,因此"和位"为0,"进位"为1。

二、逻辑门(Logic Gate)

布尔运算(Boolean operation)的规则,可以套用在二进制加法上。布尔运算有三个基本运算符:AND,OR,NOT,又称"与门"、"或门"、"非门",合称"逻辑门"。它们的运算规则是:

  AND:如果( A=1 AND B=1 ),则输出结果为1。

  OR:如果( A=1 OR B=1 ),则输出结果为1。

  NOT:如果( A=1 ),则输出结果为0。

两个输入(A和B)都为1,AND(与门)就输出1;只要有任意一个输入(A或B)为1,OR(或门)就输出1;NOT(非门)的作用,则是输出一个输入值的相反值。它们的图形表示如下:


三、真值表的逻辑门表示

现在把"真值表"的运算规则,改写为逻辑门的形式。

先看sum(和位),我们需要的是这样一种逻辑:当两个输入不相同时,输出为1,因此运算符应该是OR;当两个输入相同时,输出为0,这可以用两组AND和NOT的组合实现。最后的逻辑组合图如下:


再看carry(进位)。它比较简单,两个输入A和B都为1就输出1,否则就输出0,因此用一个AND运算符就行了。


现在把sum和carry组合起来,就能得到整张真值表了。这被称为"半加器"(half-adder),因为它只考虑了单独两个位的相加,没有考虑可能还存在低位进上来的位。


四、扩展的真值表和全加器

如果把低位进上来的位,当做第三个输入(input),也就是说,除了两个输入值A和B以外,还存在一个输入(input)的carry,那么问题就变成了如何在三个输入的情况下,得到输出(output)的sum(和位)和carry(进位)。

这时,真值表被扩展成下面的形式:


如果你理解了半加器的设计思路,就不难把它扩展到新的真值表,这就是"全加器"(full-adder)了。


五、全加器的串联

多个全加器串联起来,就能进行二进制的多位运算了。

先把全加器简写成方块形式,注明三个输入(A、B、Cin)和两个输出(S和Cout)。


然后,将四个全加器串联起来,就得到了四位加法器的逻辑图。


六、逻辑门的晶体管实现

下一步,就是用晶体管做出逻辑门的电路。

先看NOT。晶体管的基极(Base)作为输入,集电极(collector)作为输出,发射极(emitter)接地。当输入为1(高电平),电流流向发射极,因此输出为0;当输入为0(低电平),电流从集电极流出,因此输出为1。


接着是AND。这需要两个晶体管,只有当两个基极的输入都为1(高电平),电流才会流向输出端,得到1。


最后是OR。这也需要两个晶体管,只要两个基极中有一个为1(高电平),电流就会流向输出端,得到1。


七、全加器的电路

将三种逻辑门的晶体管实现,代入全加器的设计图,就可以画出电路图了。


(点击看大图

按照电路图,用晶体管和电路板组装出全加器的集成电路。


左边的三根黄线,分别代表三个输入A、B、Cin;右边的两根绿线,分别代表输出S和Cout

八、制作计算机

将四块全加器的电路串联起来,就是一台货真价实的四位晶体管计算机了,可以计算0000~1111之间的加法。


电路板的下方有两组各四个开关,标注着"A"和"B",代表两个输入数。从上图可以看到,A组开关是"上下上上",代表1011(11);B组开关是"上下下下",代表1000(8)。它们的相加结果用五个LED灯表示,上图中是"亮暗暗亮亮",代表10011(19),正是1011与1000的和。

九、结论

虽然这个四位计算机非常简陋,但是从中不难体会到现代计算机的原理。

完成上面的四位加法,需要用到88个晶体管。虽然当代处理器包含的晶体管数以亿计,但是本质上都是上面这样简单电路的累加。

时间: 2024-10-31 16:09:11

四位计算机的原理及其实现的相关文章

利用C#重启远程计算机

如果叫你实现远程启动别人的计算机,你首先想到的可能是先做一个在远程计算机上面运行客户端程序,然后在本地计算机上面再做一个服务器端程序,通过这二个程序直接的通讯实现重启远程计算机.这当然是一个方法.但这未免有点麻烦.如果现在只告诉你远程计算机的管理者的登陆帐号,而并不允许你在远程的计算机上面运行一个所谓的客户端程序,让你通过程序来完成重启远程计算机.不知道你是否感觉有些困难了.其实按照上面的这些条件实现重启远程计算机,利用C#可以比较方便的完成.下面就来介绍一下具体的实现方法. 一. C#重启远程

利用C#重启远程计算机

如果叫你实现远程启动别人的计算机,你首先想到的可能是先做一个在远程计算机上面运行客户端程序,然后在本地计算机上面再做一个服务器端程序,通过这二个程序直接的通讯实现重启远程计算机.这当然是一个方法.但这未免有点麻烦.如果现在只告诉你远程计算机的管理者的登陆帐号,而并不允许你在远程的计算机上面运行一个所谓的客户端程序,让你通过程序来完成重启远程计算机.不知道你是否感觉有些困难了.其实按照上面的这些条件实现重启远程计算机,利用C#可以比较方便的完成.下面就来介绍一下具体的实现方法. 一. C#重启远程

我是如何学习计算机编程的

我在很小年纪的时候就开始学习编程,我学习编程的方法是创建大量的不同的网站.下面列出的是我创建的主要的网站,其中最早的一个是我11岁时开发的.我希望读者能从我这些复述中获得的信息是:如果你想学习编程,做大量的练习性的项目是非常必要的. 学习一种技术最好的方法就是练习,练习,练习.所有我知道的最优秀的程序员都深深的享受编程--编程是一件让他们干起来无由的高兴的事情.也因此他们大量的编程.经常,那是一种不健康的废寝忘食.学习如何编程--以及如何编好程--并不需要你具有超人的能力.你只需要去按照自己的意

数据库索引原理及优化

本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论. 二.常见的查询算法及数据结构 为什么这里要讲查询算

[转]MySQL索引背后的数据结构及算法原理

引用:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论. 文章

[数据库]MySQL索引背后的数据结构及算法原理

一 写在前面的话 在编程领域有一句人尽皆知的法则"程序 = 数据结构 + 算法",我个人是不太赞同这句话(因为我觉得程序不仅仅是数据结构加算法),但是在日常的学习和工作中我确认深深感受到数据结构和算法的重要性,很多东西,如果你愿意稍稍往深处挖一点,那么扑面而来的一定是各种数据结构和算法知识.例如几乎每个程序员都要打交道的数据库,如果仅仅是用来存个数据.建建表.建建索引.做做增删改查,那么也许觉得数据结构和这东西没什么关系.不过要是哪天心血来潮,想知道的多一点,想研究一下如何优化数据库,

MySQL索引背后的数据结构及算法原理

看到的一篇关于MySql索引的介绍,感觉比较经典,直接转了. 本文转自张洋博客,原文链接:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree索引,因为

《逻辑与计算机设计基础(原书第5版)》——导读

前言 本书的目的是为广大读者提供学习逻辑设计.数字系统设计和计算机设计的基础知识.本书第5版突出了课程内容方面的最新发展.从1997年的第1版开始,作者就不断对其进行修改,提供一种独一无二的将逻辑设计与计算机设计原理结合在一起的方法,并特别强调硬件.过去几年,教材一直紧跟行业的发展趋势,新增加了一些内容(如硬件描述语言),删除或者弱化了某些不太重要的内容,修改了某些内容以反映计算机技术和计算机辅助设计所发生的变化. 新版的变化 第5版反映了相关技术与设计实践方面的一些变化,与过去相比,要求计算机

《C语言程序设计:问题与求解方法》——第0章“理想厨房”的工作原理

第0章 "理想厨房"的工作原理计算机从发明到现在不过70年左右的时间,然而计算机的发明.改进和普及,却彻底地变革了人类社会.计算机本身也变得越来越复杂.快速.小巧.种类繁多.目前,大多数计算机都遵循冯·诺伊曼体系结构,这为我们理解计算机的基本工作原理提供了方便.从某种角度来看,计算机就是一种人造智能生命.想要真正学会编程,通过编写的程序命令计算机工作,就必须懂得计算机的基本工作原理,就像人们要与某种具有智能的其他物种个体进行交流时必须对那个物种的习性有基本了解一样.本章和下一章是全书的