qakcn
学生会会长
学生会会长
  • 注册日期2008-10-31
  • 最后登录2021-01-05
  • 生日1988-8-18
  • 光玉3394颗
阅读:1450回复:12

科普第26篇——计算机是怎样做加法的

楼主#
更多 发布于:2012-06-08 16:24
本来这篇应该是讲内部接口的,本来接下来应该继续讲网络的,可是我自己的电脑不能用,只能在网吧将就一下,于是就来这样一篇吧。

首先,我们要明确一点——计算机是不会做数学运算的。
可能有人要反驳了,别急,我们慢慢说来。

那么计算机会做什么运算呢?对计算机有一点了解的人可能已经知道答案了——计算机只会做逻辑运算。

什么是逻辑运算,说白了,就是对“真”和“假”的运算。
真和假这两种状态可以非常方便地表示——可以是电位的高和低,可以使电流的有和无,或者,可以是0和1。
没错,正是因为计算机只会做逻辑运算,所以计算机里使用的基本数制才是二进制——0和1.,真和假,就这么对应上了。

逻辑运算,高中都要学,即使没学过的不太理解,将来也会明白的。
逻辑运算只有三种基本运算:或、与、非。
或和与都是双目运算符,需要对两个数进行运算;非是单目运算符。

逻辑运算里最常见的一种表示方式,就是真值表了。为了加深大家对二进制的印象,下面都用0表示假,1表示真。

或运算(or):或运算用符号“∨”来表示,在计算机和电子学领域也会见到“||”、“+”(逻辑加)的表示方式。A∨B的真值表如下:
[table=20%][tr][td]A
[/td][td]B
[/td][td]A∨B
[/td][/tr][tr][td]0
[/td][td]0
[/td][td]0
[/td][/tr][tr][td]1
[/td][td]0
[/td][td]1
[/td][/tr][tr][td]0
[/td][td]1
[/td][td]1
[/td][/tr][tr][td]1
[/td][td]1
[/td][td]1
[/td][/tr][/table]
用文字来描述的话,就是“只有在A、B均为假时,A∨B才为假。”

与运算(and):与运算用符号“∧”来表示,在计算机和电子学领域也会见到“;;”、“·”(逻辑乘)的表示方式。A∧B的真值表如下:
A
B
A∧B
0
0
0
1
0
0
0
1
0
1
1
1

用文字来描述的话,就是“只有在A、B均为真时,A∧B才为真。”

非运算(not):非运算通常用符号“¬”来表示,除此之外还有一横(加在逻辑数之上)、“~”、“!”等表示方式。¬A的真值表如下:
A
¬A
0
1
1
0

用文字来描述的话,就是“对A取相反的值“。

其他所有的逻辑运算,都可以用这三种基本运算表示出来。

可是,还是没说到计算机是怎样做加法的啊!
别着急,我们先来看看一位二进制数的加法:
0+0=0
1+0=1
0+1=1
1+1=10
如果我们把进位另外考虑的话,最后一个可以写成1+1=0(进一位)。
然后我们把0当做假,1当做真,把二进制加法转换成某种逻辑运算。我们先用⊕来表示这个运算,其真值表如下
A
B
A⊕B
0
0
0
1
0
1
0
1
1
1
1
0

文字描述就是:”A和B不同时为真,相同时为假“。

上面说过,所有其他逻辑运算都可以用三种基本运算来表示,那么这个运算怎么表示呢?
不需要大家去自己去想,下面就告诉大家:
A⊕B = ( A ∧ ¬B ) ∨ ( ¬A ∧ B ) = ( A ∨ B ) ∧ ( ¬A ∨ ¬B ) = ( A ∨ B ) ∧ ¬( A ∧ B ) = ¬( ( A ∧ B ) ∨ ( ¬A ∧ ¬B ) )
上面几个式子都是等价的,至于怎么转换,有兴趣的去查查相关的内容吧!

这种运算,就被称作”异或“(xor),异或的运算符正是我们上面所用的这个。根据这种运算设计出来的逻辑电路,就被称作”半加器“。当然,半加器除了有异或运算输出的当前位之外,还有一个表示进位的输出,这个输出想必大家能看出来,就是根据A∧B算出来的。

又说到了新名词,逻辑电路。逻辑电路,顾名思义,就是进行逻辑运算的电路。逻辑电路里的基本构成是逻辑门,所以逻辑电路也叫门电路。逻辑电路是由晶体管等电子元件构成的,但是为了表示方便,逻辑门有自己的符号(而不考虑实际是由什么电子元件组成的)。逻辑电路从输入端输入高、低电平,从输出端输出经过逻辑运算得到的高低电平(究竟是高表示真低表示假,还是低表示真高表示假,这并没有统一规定)。上面介绍的四种运算的表示方法如下:
非门:
与门:
或门:
异或门:

半加器有两个输入端A和B(加数和被加数),有两个输出端S(和)和C(进位),S=A⊕B,C=A∧B。真值表如下:
输入输出
ABCS
0000
0101
1001
1110

半加器的逻辑电路如下:


可是,还是有问题,半加器虽然能输出进位,但却无法输入进位,于是又在此基础上,构造了一种新的逻辑电路——全加器。
相比半加器,全加器多了一个输入进位的Cin,输出的和S和进位Cout也是在A、B、Cin相加算出的。
S=(A⊕B)⊕Cin
Cout=(A∧B) ∨(Cin∧(A⊕B))=(A∧B)∨(B∧Cin)∨(Cin∧A)
真值表:
输入输出
A
C
CinCoutS
00000
00101
01001
01110
10001
10110
11010
11111

逻辑电路:

不知各位有没有注意到,全加器是由两个半加器组成的,两个半加器的C端再通过一个或门(也可以用异或门代替,想想为什么)。

将多个全加器Cout和Cin串联起来,就能组成多位加法器,加数和被加数的各位分别从对应的加法器的A、B端输入,和就从加法器的S端输出,最初的Cin可以输入0而最后的Cout可以输出到一个溢出标志位。

就这样,数学运算就被转换成逻辑运算了。
在电子计算机出现以前,已经有很多数学家为它的诞生打下了基础,比如学过计算机编程的一定不陌生的乔治·布尔(George Boole),就对本文中讲到的数理逻辑做出了很多贡献。

后面有机会,我们来讲讲计算机是怎样做减法的吧。


==========之前的文章==========
科普第1篇——计算机色彩
科普第1篇补遗——CSS颜色
科普第2篇——光盘
科普第3篇——2、8、10、16
科普第4篇——电池
科普第5篇——浏览器
科普第6篇——字符编码
科普第7篇——加密解密
科普第8篇——移动通信技术
科普第9篇——为什么32位CPU不能支持大于4GB内存?
科普第10篇——智能手机简介
科普第11篇——14.52-14.49=0.0299999?
科普第12篇——为什么HTTPS会更安全?
科普第13篇——计算机语言
科普第14篇——字体(上)
科普第15篇——字体(中)
科普第16篇——字体(下)
科普第17篇——域名解析
科普第17篇补遗——域名
科普第18篇——虚拟内存
科普第19篇——时间
科普第20篇——日期
科普第21篇——日期时间补遗及计算机的时间
科普第22篇——网络(0):基本概念
科普第23篇——科普第23篇——二进制的线性编码
科普第24篇——网络(1):OSI模型
科普第25篇——外部接口(第一次修订)

科普番外篇1——虽然没用但了解一下也很有趣的知识
科普番外篇2——月食
喜欢1 评分0

最新喜欢:

blood-nightlordblood-...
xx
xx
光坂硕士生
光坂硕士生
  • 注册日期2011-10-10
  • 最后登录2013-09-03
  • 生日1950-1-23
  • 光玉6210颗
沙发#
发布于:2012-06-08 17:01
高端  能在网吧直接自己写出这么一篇科普性文章  功底真好啊  尽管加减逻辑运算不是太在意
                   NoName == 401 Unauthorized
                 The Unknown Will Stay Unknown
                    This  Is   X       A   Pro   Diver
回复(0) 喜欢(0)     评分
iejr
光坂大学生
光坂大学生
  • 注册日期2012-01-14
  • 最后登录2016-02-06
  • 生日1992-3-4
  • 光玉1560颗
2楼#
发布于:2012-06-08 18:27
。。。偶怎么直接想到了这学期刚考完的数字电路与逻辑设计。。。
回复(0) 喜欢(0)     评分
晴空夏影
光坂大学生
光坂大学生
  • 注册日期2012-02-25
  • 最后登录2019-11-10
  • 生日1993-1-10
  • 光玉1474颗
3楼#
发布于:2012-06-08 18:42
厉害啊……虽然咱看的不是太仔细太认真……
一直觉得现代科技实在是神奇,尤其是电脑网络,实在无法理解怎么就这么个设备就能有这么强大的功能!
この青空に约束を-夏影
回复(0) 喜欢(0)     评分
hc605
光坂国中生
光坂国中生
  • 注册日期2012-02-17
  • 最后登录2018-09-21
  • 生日1950-1-1
  • 光玉37颗
4楼#
发布于:2012-06-08 18:56
楼主好厉害、。还有,我也可以写类似于这样的帖子吗?我想分享一些我对通讯方面知道的一些事情。。。。
回复(0) 喜欢(0)     评分
濯焰
光坂国中生
光坂国中生
  • 注册日期2009-07-14
  • 最后登录2013-04-25
  • 生日1990-12-2
  • 光玉33颗
5楼#
发布于:2012-06-08 20:04
半加器和全加器撒,支持,话说LZ对grub有研究没?最近用光驱加了块硬盘,上面有win8,我想改下grub引导之,但deepin找不到menu.lst,最近考试复习没时间搞  = =!
回复(0) 喜欢(0)     评分
莫娜の狼
学生会会长
学生会会长
  • 注册日期2012-03-15
  • 最后登录2023-11-05
  • 生日1993-5-31
  • 光玉3633颗
6楼#
发布于:2012-06-08 20:05
= = 这个算是计算机科学与技术的课程了吧……虽说计算机学院的都有涉及……
回复(0) 喜欢(0)     评分
freehades
光坂三年生
光坂三年生
  • 注册日期2012-02-26
  • 最后登录2014-04-18
  • 生日1994-9-25
  • 光玉524颗
7楼#
发布于:2012-06-08 20:45
自从咱上了高中以后咱就放弃了以后要当一个黑客的梦想.....信息就没搞懂过....
[IMG]http://p.dmdjz.com/uploads/2012/04/ae5c82ccb3c59e4201e92894.jpg[/IMG]瑠璃党!黑猫大爱!
回复(0) 喜欢(0)     评分
圣火之灵
光坂基金会
光坂基金会
  • 注册日期2009-10-19
  • 最后登录2016-01-23
  • 生日1989-2-1
  • 光玉2503颗
8楼#
发布于:2012-06-08 20:55
西~
平凡快乐的活着~!
回复(0) 喜欢(0)     评分
liurensong12
光坂三年生
光坂三年生
  • 注册日期2011-05-16
  • 最后登录2014-11-26
  • 生日1991-4-3
  • 光玉871颗
9楼#
发布于:2012-06-08 22:38
感觉下一步把前辈的这些帖子都看一遍的话  我卖电脑销量会增加的吧
[IMG]http://p.dmdjz.com/uploads/2012/03/cc7971ef35bfe184cf1b3e29%281%29.jpg[/IMG]
回复(0) 喜欢(0)     评分
blood-nightlord
光坂基金会
光坂基金会
  • 注册日期2009-05-07
  • 最后登录2019-02-09
  • 生日1986-8-28
  • 光玉1230颗
10楼#
发布于:2012-06-08 23:18
话说这个可以开本书和专辑了= =|||
PS  如果不是转载的话
回复(0) 喜欢(0)     评分
双月的骑士
学生会干部
学生会干部
  • 注册日期2012-02-12
  • 最后登录2023-04-25
  • 生日1994-9-5
  • 光玉5089颗
11楼#
发布于:2012-06-09 00:11
前辈乃好专业啊!不过这么多知识。看着感觉很枯燥啊,有点看不下去啊,而且,基本都看不太懂,可能是没仔细看吧!
恐惧并不是胆小,而是明白自身的弱小!
2013年春季新番动画一览
回复(0) 喜欢(0)     评分
ct一剑
光坂博士生
光坂博士生
  • 注册日期2010-10-04
  • 最后登录2014-08-21
  • 生日1991-10-16
  • 光玉13939颗
12楼#
发布于:2012-06-09 10:40
= =我想到我大二那会学的电力电子技术了
回复(0) 喜欢(0)     评分
游客

返回顶部