利用這些簡單的門電路就可以實現最為關鍵的加法器。
在電腦內部,所有的運算都是加法,不過計算機的加法計算十分反人類。
首先,計算機把數轉換成二進制,全是0、1代碼,轉換都是按現成的程序進行。
如果計算加法,則把兩數按位相加,如13+15,轉換后是1101+1111,按0+0=0,1+0=0+1=1,1+1=10的規則,結果為11100,輸出時再轉換為28。
如果是計算減法,則把減數取補碼,按位把0換成1,把1換成0,后加1,再相加。
以八位數據計算為例子,計算15-13,
先轉換15=00001111,13=00001101,
取13的補碼為11110010,加1后為11110011,
相加有00001111+11110011=100000010,位數已超過八位,把最高位舍棄,取后八位為00000010,也就是十進制的2。
這里的計算感覺很復雜,實際上,計算機計算起來并不麻煩,甚至非常簡便快捷,因為計算機內部存在加法器,幾個時鐘周期就可以計算一次加法,再加上計算機內部都是自動化計算,通過加法器完成,計算起來非常快。
加法運算就是用加法器實現的,計算機里一個叫做ALU的功能模塊,里面有很多硬件的計算電路,比如加減乘除,開指數,指數,微分,積分,處理最基本的運算,加快數據的計算速度。
自然,加減乘除,開指數,指數,微分,積分等等運算也是由加法實現的,這里有很多的數學理論,計算機實際上就是數學思想的結晶。
ALU還有一個功能,那就是決定進行哪種運算,鍵盤上的數學運算符號用來決定ALU的選擇,如果計算更復雜一點可以通過軟件選擇ALU進行那種運算。
設計計算機首先就要設計ALU,也就是設計加法器,計算機內部的加法器有全加器和紋波進位加法器、超前進位加法器。
一個全加器只能進行一位二進制的加法,有了全加器以后,就能做多位二進制數的加法了,只要把多個全加器的輸入和輸出連起來,就像可以實現多位的加法。
紋波進位加法器就是這樣一個簡單地把許多個全加器串聯起來的加法器,它能進行多位數的加法運算,但這種加法器有種缺陷,就是bit位運算太慢,每個bit位的計算都要等到上個bit的運算結束后才能進行運算,導致如果運算位數非常之多的話,整個加法器運算會非常緩慢,所以紋波進位加法器只能做bit位較少的加法計算。
如果要進行bit位較多的加法計算,就要設計超前進位加法器,這種加法器不需要等上一位的運算結束,而是直接就可以通過布爾運算得出當前位的值,而計算的方式是利用硬件計算。
所以超前進位加法器也有缺陷,因為要利用硬件進行布爾運算,位數越多電路就越復雜,這樣不僅運算會變慢,成本也會變高。
而用硬件進行布爾運算也需要用到加法器,所以超前進位加法器也是由全加法器實現的,只不過擁有更多的全加器,構成了超前進位全加器。
除了加法器之外還有減法,乘法,除法,等等,這是計算機必須的,計算機要進行復雜的運算,需要利用數值計算方法的原理,或是將各種數學函數變換變為只有加減乘除的多項式,或是使用迭代的方式計算,或是近似計算等等。