计算机中加法的实现

加法的实现

1、一些简单但足够了的的电学知识

要了解加法是怎么实现的,首先咱们来看一些电学中的知识。毕竟CPU本质上只是一个庞大的电路实现,虽然CPU完整电路很是复杂,但其倒是有几个很是简单和最基础的电学原件组成的(真的很是简单!!!)。spa

1. 与门

AND

与门只有当两个输入都为1时才输出1,其输入与输出以下:3d

输入 1 0
1 1 0
0 0 0

二、或门

OR

或门只要有一个输入为1时输出就为1,其输入输出以下:blog

输入 1 0
1 1 1
0 1 0

三、与非门

NAND

输出和与门彻底相反,其输入输出以下:图片

输入 1 0
1 0 1
0 1 1

咱们只需知道这三个基本的电路就,咱们就能够用这个三门来搭建一个加法器。it

2、二进制加法

如今咱们有两二级制数A和B,值分别为A=10010001,B=11010011,咱们先人工来算一下他的和:
图片描述table

咱们在人工进行计算时从右往左依次将后两位进行相加,若是有进位则进行进位相加。
其实计算机在实现二进制加法时也是这样逐位相加的,有进位则进位。
咱们先来看一下1位二进制数加法表:class

+ 0 1
0 00 01
1 01 10

仔细看这个一位加法表,在进行一位的加法时只有当两个加数都为1时才会发生进位。咱们不妨把结果分为加法位和进位,咱们在分别来看一下加法位和进位的状况:基础

一、加法位

+ 0 1
0 0 1
1 1 0

仔细观察这个加法位表,若是不看右下角的话,那不就是或门的输出吗。若是不看左上角的话,那不就是与非门的输出吗。
这样咱们想要的就很明了了,就是将或门和与非门的输出结合起来。我先看一下相同输入的状况下或门和与非门的输出:
电路链接:
图片描述扩展

输入输出结果表:二进制

A B 与非门输出 或门输出 想要的结构
0 0 1 0 0
0 1 1 1 1
1 0 1 1 1
1 1 0 1 0

仔细观察与非门、或门的输出和想要的结果,是否是很是眼熟,当两个门的输出同时为1时就是咱们想要的1其余为0,这不就是与门吗。
全部咱们只需将与非门和或门的输出做为一个与门的输入,就能够获得加法位的结果,以下:
图片描述

其实这个电路有个专门的名称叫作异或门,只有单两个输入都不相同时输出才为1,符号以下:
图片描述

实现了加法位咱们再来看一下进位

二、进位

一位加法的的进位结果以下:

+ 0 1
0 0 0
1 0 1

看这个表是否是更加眼熟,这不就是咱们的与门吗,全部咱们只需一个或门就能够实现进位。
如今加法位和进位咱们都已经实现了,接下来只须要将两者连起来就实现了一个一位的加法器了,以下:

图片描述

为了不每次都要画出与门和异或门,这个加法的实现咱们用一个特殊的符号来表示,以下:
图片描述

咱们成其为半加器,由于他只能将两个一位的二进制数相加,但咱们作加法时每每都有进位相加的状况。
为了实现进位相加咱们能够利用两个半加器和一个或门,按以下电路图进行链接:
图片描述

首先将输入的A和B进行相加获得的结果在和进位相加获得加法位的结果,对于进位毕竟三个一位的二进制数相加能获得的最大结果为11(1+1+1)进位最多发生一次,因此使用或门输出进位。若是没有进位那进位输入为0。
其实这个电路图也有一个专门的符号,让咱们免于每次都画一个完成的全加器。
图片描述

如今咱们已经实现的进位的加法了,计算机加法的实现页差很少了,如今只剩下一个问题,如何进行多位的加法那?好比8位的加法,这个也很是简单只需将一个全加器的进位输出做为下一个全加器的进位输入来扩展。
8为的加法器实现以下图:
图片描述

通常使用符号以下:
图片描述

到这加法的实现就结束完了。

相关文章
相关标签/搜索