為什么計算機只能做加法?
讓讓我們簡單介紹一下加法電路。
為了讓計算機執行算術運算,輸入數據必須首先編碼。現代計算機都是二進制計算機,n位二進制數的編碼空間是。如果使用8位二進制編碼,最多可以有256種不同的狀態,可以對應自然數中的0-255,這是一個8位無符號整數。
我們知道有限數集合對于加法不是閉的,對于加法閉的數集合一定是無限數集合(比如自然數集合的子集)。顯然,計算機只能處理有限的數據,所以我們需要對有限的數集進行閉運算。模加法滿足這個性質,用二進制運算實現起來特別簡單。
例如,如果運算的輸入和輸出使用8位無符號整數,在某些情況下會發生溢出,即計算結果不能用8位保存,那么溢出部分將被丟棄,例如:
,
注意到
所以只要輸出比輸入多一位,運算結果就可以完整保留,多出來的位就是進位。
回想一下,你是怎么學會算術的?熟練背誦10以內的加法和乘法,把用小數表示的算術運算分解成幾個10以內的加法和乘法,逐步計算。教計算機做算術也差不多。教二進制計算機做加法只需要教它做2以內的加法。
數學上,一元函數是一組數字到另一組數字的映射:
多元函數是從向量集到數集的映射;
向量函數是從向量集到數集的多重映射:
多元向量函數實際上是多個多元函數的組合:
接下來介紹一個半加法器,輸入是A,B;輸出是s,c。
是兩個二維的二元向量;
是從二維向量集到數集的二維向量函數。
設計這個雙輸入半加法器就是設計這個功能。
(其中,),
至于如何設計這個函數,你需要布爾代數的知識。
列出真值表:
布爾代數告訴我們,進位A和B,和A異或B((非A和B)或(A和(非B))。
上述兩個邏輯表達式可以縮寫如下:
所以實現了。
再回想一下,學完10以內的加法,如何掌握更大范圍的整數加法?站直了。
根據解決方案,它是一個垂直過程。
好了,現在垂直計算3/3。
我們發現只有兩個輸入的半加法器是不夠的,前一位的進位要作為后一位的輸入。
全加器應該有三個輸入,它的真值表如下:
以便獲得:
級聯N個全加器就是一個N位加法器,是一個步進進位加法器。
考慮到改變門電路中的電場狀態需要時間,如果輸入電平改變,則輸出電平需要一段時間來響應,當然很小,小到納秒。所以這個加法器有一個缺點:每一位的進位輸入依賴于前一位的進位輸出,只有在前一位的進位信號穩定后,這個位的全加器的運算才有意義。如果位數n很大,整個加法器就會變慢,最終會限制CPU頻率的提升。
既然一位的級聯加法器有這樣的缺點,那就干脆設計一個位數足夠大的加法器吧!
我們列出2位全加器的真值表:
我們看到,隨著n的增加,真值表的行數呈指數增長。即使位數只有2,真值表的行數也達到32,很難手工求解布爾表達式。但理論上,這樣的全加器確實存在,事實上,還有更優雅的設計方法。
再次,考慮上面提到的全加器,不是級聯獲得進位輸入,而是設計電路直接根據輸入獲得合適的進位,所以設計的加法器叫超前進位加法器。
每一級的進位可以由當前的兩個比特產生。或者由傳播進位和電流輸入的累積引起,因此下一級的進位為
因此,獲得了關于2位超前進位加法器的布爾表達式:
圖片來自托馬斯·l·弗洛伊德,《數字電子技術(第九版)》電子工業出版社,由張瑜等人翻譯。
考慮到集成電路的面積、成本、功耗、散熱等因素,超前進位加法器的位數一般不會太大。通常,幾個超前進位加法器(如8位和16位)級聯在一起,得到一個具有寬位數的加法器。
以上,部分圖片來自網絡,已刪除。
助聽器真能延緩認知功能下降嗎?
你好:助聽器真的能延緩認知下降嗎?聲音的傳播路徑是外耳-中耳-內耳-聽神經-大腦中樞,只有大腦做出反應才知道別人的意思。如果發現聽力下降,不及時干預,日常生活中接收到的聲音會更少。聽力損失程度越大,接收到的聲音就越少,接收到的外部聲音就越少,大腦的反應速度會越來越慢。當你及時干預,你的聽覺靈敏度會提高,你會接收到越來越多的外界聲音。這就是通常所說的原則用錢來償還"。所以助聽器可以延緩認知下降。希望我的回答能幫到你!