前言:
放假有一周的时间,到家也有四五天的时间了,这几天把《code》好好的看了一遍。尽管之前也有草草翻过,但是把时候我就曾告诉自己,无论如何都是要把书中的这些东西都实现一遍的。于是说干就干,这几天基本上就在搞这些东西了。这些学习成果要感谢余富帅给我传的软件以及一些推荐。
=========================================================================
转载请遵循GNU开源宣言。Copyleft ! <2013>, <http://www.cnblogs.com/sciencefans from buaa 华罗庚班>
阅读此文,你需要拥有以下基础:
1.小学代数相关知识;2.初中电路;3.高中门电路相关知识;4.二进制和十进制的转换(这一点不会也没有关系)。
一台计算机是由硬件和系统为基础的。其中硬件包括所有的逻辑电路和功能电路。其中不可缺少的便是CPU,RAM。那么这两者的电路首先要建起。
首先我们考虑一个二进制加法器。小学我们做竖式加法的时候就知道,一个按位加法器必须包含加和位S和进位C。首先,可以列出两者的真值表:
不难发现,S和一个抑或门电路的输入输出相同,C和一个与门电路等价。那么就很容易的做出如下设计:
其中CI是指前一位进位,但是这里只作为一个单位加法器,不妨把它接地为0,IA,IB是两个相加数字。S,C分别是加和位和进位位。
当加数为1和0时,显然和数为1,进位位为0,则有如下表示:
当加数为1,1时,和为10,所以和数为0,进位位为1.
当之前一位有进位过来,加数又分别是1,1,则和应该是1+1+1=11,则S,C都应为1.
但是人类总是不满足的。这种加法器一次只能进行一个单位的运算,也就是说只能算1+1,0+0,1+0。假如我想计算3+4,也就是0011+0100,这至少要涉及到三位加法运算,该怎么办呢?
方法就在:
http://www.cnblogs.com/sciencefans/p/3185318.html
至此,一个一(单)位加法器就做好了。