一、一些簡單但足夠了的的電學知識
要了解加法是怎麼實現的,首先我們來看一些電學中的知識。畢竟cpu本質上只是乙個龐大的電路實現,雖然cpu完整電路非常複雜,但其卻是有幾個非常簡單和最基礎的電學原件組成的(真的非常簡單!!!)。
1. 與門
與門只有當兩個輸入都為1時才輸出1,其輸入與輸出如下:輸入1
0110
000 2、或門
或門只要有乙個輸入為1時輸出就為1,其輸入輸出如下:輸入1
0111
010 3、與非門
輸出和與門完全相反,其輸入輸出如下:輸入1
0101
011 我們只需知道這三個基本的電路就,我們就可以用這個三門來搭建乙個加法器。
現在我們有兩二級制數a和b,值分別為a=10010001,b=11010011,我們先人工來算一下他的和:
我們在人工進行計算時從右往左依次將後兩位進行相加,如果有進製則進行進製相加。
其實計算機在實現二進位制加法時也是這樣逐位相加的,有進製則進製。
我們先來看一下1位二進位制數加法表:+0
100001101
10 仔細看這個一位加法表,在進行一位的加法時只有當兩個加數都為1時才會發生進製。我們不妨把結果分為加法位和進製,我們在分別來看一下加法位和進製的情況:
1、加法位+0
1001
110 仔細觀察這個加法位表,如果不看右下角的話,那不就是或門的輸出嗎。如果不看左上角的話,那不就是與非門的輸出嗎。
這樣我們想要的就很明了了,就是將或門和與非門的輸出結合起來。我先看一下相同輸入的情況下或門和與非門的輸出:
電路連線:
輸入輸出結果表:ab
與非門輸出
或門輸出
想要的結構00
1000
1111
1011
1110
10仔細觀察與非門、或門的輸出和想要的結果,是不是非常眼熟,當兩個門的輸出同時為1時就是我們想要的1其他為0,這不就是與門嗎。
所有我們只需將與非門和或門的輸出作為乙個與門的輸入,就可以得到加法位的結果,如下:
其實這個電路有個專門的名稱叫做異或門,只有單兩個輸入都不相同時輸出才為1,符號如下:
實現了加法位我們再來看一下進製
2、進製
一位加法的的進製結果如下:+0
1000
101 看這個表是不是更加眼熟,這不就是我們的與門嗎,所有我們只需乙個或門就可以實現進製。
現在加法位和進製我們都已經實現了,接下來只需要將二者連起來就實現了乙個一位的加法器了,如下:
為了避免每次都要畫出與門和異或門,這個加法的實現我們用乙個特殊的符號來表示,如下:
我們成其為半加器,因為他只能將兩個一位的二進位制數相加,但我們做加法時往往都有進製相加的情況。
為了實現進製相加我們可以利用兩個半加器和乙個或門,按如下電路圖進行連線:
首先將輸入的a和b進行相加得到的結果在和進製相加得到加法位的結果,對於進製畢竟三個一位的二進位制數相加能得到的最大結果為11(1+1+1)進製最多發生一次,所以使用或門輸出進製。如果沒有進製那進製輸入為0。
其實這個電路圖也有乙個專門的符號,讓我們免於每次都畫乙個完成的全加器。
現在我們已經實現的進製的加法了,計算機加法的實現頁差不多了,現在只剩下乙個問題,如何進行多位的加法那?比如8位的加法,這個也非常簡單只需將乙個全加器的進製輸出作為下乙個全加器的進製輸入來擴充套件。
8為的加法器實現如下圖:
一般使用符號如下:
到這加法的實現就結束完了。
計算機中減法的實現原理
這本來就是大一的時候就開始學習的,但是之後一直沒再接觸。一接觸但有概念而沒有乙個清晰的過程,所以再次縷清了後記錄一下部落格。本文重點闡明了計算機中減法運算的實現以及反碼 補碼的意義。對於加法來說,計算機很容易實現,舉例 8 6 14 在計算機中,也就是 0000 1000 0000 0110 000...
計算機中斷理解
一.什麼是中斷 計算機中斷 顧名思義,就是計算機由於遇到一些緊急情況,中斷現在的工作,轉而 處理緊急情況,處理完緊急情況以後再回到以前執行的工作繼續執行。不過這只是狹義的計 算機中段概念。因為這個概念只能解釋內部中斷和外部中斷,然而對於軟體中斷卻不能套用 次概念。為了讓我們更加方便的理解中斷這個概念...
計算機中的定址
電腦的位數通常是指cpu的處理位數,這個不是靠位址匯流排來決定的,這個位數指的是cpu 通用暫存器的資料寬度,即cpu一次運算可以處理的資料bit長度。前面所說的是記憶體空間足夠的情況,下面用過一道軟考題目解釋記憶體空間 定址範圍的情況 某計算機字長32位,儲存容量8mb。按字編址,其定址範圍為 0...