計算機中加法的實現

加法的實現

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爲的加法器實現以下圖:
圖片描述

通常使用符號以下:
圖片描述

到這加法的實現就結束完了。

相關文章
相關標籤/搜索