電子計算機的最底層是由邏輯門構建的加法器和記憶電路。通過層層抽象和模塊化的復雜組合,可以構建出紛繁復雜的各種應用。
其強大的功能在于其能實現各種復雜的算法,在于其構建集成電路的晶體管可以足夠小、足夠多(一個指甲蓋大的處理器可以集成超10億個晶體管),電子電路信號傳輸的速度可以足夠快(接近光速)。
電子計算機的計算不只是單純數學意義上的計算,因為一切都可以通過數字化編碼,有了編碼便可以實現一切非數值計算處理。如補碼、IEEE 754編碼、ASCII等字符編碼、圖像編碼、字形編碼,聲音編碼(編碼的實質也是用一個整數來代替某一字符、像素、或音符振動的頻率)等。
現在計算機絕大部分是馮諾依曼計算機,其核心概念是“存儲程序和程序控制”(一組指令或語句實現自動執行):
(世界萬物和建設性創想都是從無到有,從萌芽到慢慢成熟的。世界上第一臺電子數字計算機Eniac的編程方式是通過手工連接線路和插拔開關來組合不同硬件模塊來實現不同功能或完成不同任務。沒有鍵盤輸入和硬盤存儲,沒有現代馮諾馮諾機的內存加載和寄存器產生控制信號。由此,整個計算過程可以不再需要人工干預,實現了一定程度的計算自動化。)
CPU的核心是控制器和運算器,控制器產生控制信號,可以自動完成一組運算,運算器完成邏輯運算和算術運算。邏輯電路自然可以完成邏輯運算(布爾運算),算術運算是以加法運算為基礎構建的。由加法運算可以實現減法、乘法、除法等算術運算。
程序控制:
實現算法的基礎在于控制結構,控制結構包括順序、分支選擇、循環結構等三種。(控制結構也是一個建設性的創想,是對跳轉語句在更高層次上的抽象。)
一組指令或語句組成的程序,可以在控制器的控制之下逐條執行,一組指令或語句都是有地址編碼的,通過控制器的PC寄存器可以順序執行下一條指令。但何以就能夠做分支選擇和循環重復呢?
其實質在于跳轉,跳轉到不同的存儲代碼的地址便可以形成分支選擇和循環重復。如高級語言的goto語句,匯編語言的JXXX語句,關鍵是如何實現“有判斷的條件”跳轉?這樣才好像有了一點點智能。
所謂有條件的判斷,如是否等于、大于、小于等,在高級語言中就是比較運算符和比較表達式。
比較運算是通過減法運算來改變條件代碼寄存器(標志寄存器)來實現。
CMP a,b → b-a →set conditional code register → Jxxx :
-End-