6.1語句與公式
6.2符號的模擬——算術
6.3符號的規則操作——計算
6.4二進位制的應用——現代計算機
所有進製的位置記數法原理上等價,實踐中不同進製的記數法有不同的適用性。二進位制是用0、1這兩個數字,以及逢二進一的規則來表示所有的數。十進位制與二進位制相比,十進位制的數字長度更短,更容易辨識書寫,另一方面十進位制的應用需要掌握比二進位制應用更複雜的加法表與乘法表。
二進位制的發明追溯至萊布尼茨。萊布尼茨對二進位制情有獨鍾,用法國數學家、物理學家拉普拉斯(laplace,1749.3-1827.3)的話說:「萊布尼茨在他的二進位算數中看到了宇宙創始的原象。他想象1表示上帝,0表示虛無。上帝從虛無中創造出所有實物,恰如在他的數學系統中用1和0表示了...」。這倒是暗合了二進位制在現代神奇的應用之旅。二進位制的基礎符號0、1,正好可對應邏輯真值的假、真表示,在「邏輯與語法」一節,布林代數中的與、或、非運算是通過真值表定義,抽象地看,二進位制個位上加法運算可以看作與布林代數同系列的運算,只是運算元不一樣且有進製問題。
0、1與現代電子技術裡的電路與電子器件的特性相匹配。1、0可正好對應電路的開與關,電脈衝的有與無,電平的高與低,利用這一特性,技術上可由繼電器實現與門、或門、非門的數字邏輯電路,實現布林代數運算。利用異或門的數位電路可以模擬出二進位制的加法運算,理論上減法是加法的逆運算,乘法運算是連加運算,除法是乘法的逆運算,技術上通過補碼等方法,可以將四則運算都歸為加法運算。
人類神經系統是神經元(神經細胞)通過突觸相互連線成的神經網路,單個神經元與突觸工作機制也符合二進位制的方式:輸入乙個訊號,神經元或者啟用,或者抵制;啟用的神經元或者通過突觸向連線臨近神經元輸出乙個訊號,或者不輸出。這是乙個刺激人工智慧研究的描述,這樣概括神經元與突觸的工作,是否漏了其它的要點,是否能支援起神經網路整體複雜性的解釋,下不了肯定的結論。
二進位制的二個基礎符號:0、1,形成了乙個基礎的對立,利用這一對立以及線性空間理論上不受限制的位數,我們可以對任意資訊用二進位制來編碼,比如英文的26個字母或中文的每個字都可以通過ascii (american standard code for information interchange)碼或unicode碼與乙個8位或16位的二進數對應,從而每一英文單詞,或中文詞對應乙個二進位制的編碼。這些資訊的二進位制編碼,也稱為內碼,同樣可以由電子器件物理地實現,存放於計算機的儲存器
現代計算機由儲存器、運算器、控制器、輸入裝置和輸出裝置5部分組成,構成下圖的結構:
這個系統經常稱為馮·諾依曼系統((von neuman,1903.12-1957.2,美籍匈牙利數學家)。系統實現的是「儲存程式計算機」的思想:
將程式與資料預先輸入存放在儲存器
控制器從儲存器裡逐條取出程式,解析後送入運算器執行
這裡的程式是乙個指令集,每一條指令可分為二個部分
· 操作碼
· 運算元位址碼
操作碼就是對應計算機的基本操作,主要就是運算器的運算操作,運算元的位址碼是儲存器的乙個位址,對應位址裡存放有操作碼要操作的數。操作碼、運算元位址、位址裡運算元,所有這些最終是以二進位制形式告知計算機,再譯成對應的電訊號,驅動硬體執行。
運算器又稱算術邏輯單元alu(arithmetic logic unit),原理上就是前面所說繼電器的數字邏輯電路發展來的,所完成的就是算術四則運算與邏輯運算,配套上還有移位、比較與傳輸操作,以及更多技術實現上的細節。今天計算機的應用遍及各行各業,所處理的問題也越來越複雜,很多領域的程式複雜度與可靠性是人類難以**與控制的,所有這些應用中計算機主要做的處理最後都是編譯為算術邏輯單元的邏輯、數學計算。
可儲存執行不同的程式,處理不同的問題,體現的是通用圖靈機的概念。實現通用圖靈機還要滿足圖靈完備的要求,簡單地說就是要支援分支與迴圈的流程處理以及具備足夠的記憶體。
我們之前說的都是符號,現在說到的是物理的過程與狀態,這是由人設計實現的。設計實現這些物理過程與狀態,起源是對符號操作過程與結果的一種模仿與表現。你也可以把這看作是一種語言形式,符號是繼電器、句型是閘電路,語句則是電脈衝經過閘電路過程。相對的,原來的語言符號也只是另一種人造的物理過程與狀態,二者區別在於:後者是面向人的理解與操作的,前者是面向機器自動操作,由此細節上二者有更多的不同。如果乙個符號表達及其演算過程,可以反映實際的物理的現象a,也可以反映實際的物理過程b,那麼可以利用b的過程來模擬a,忽略可能的誤差,這與符號的過程等價。甚至沒有符號與演算可以用來表現,能確定a與b過程的相似,就可以用b來表現a,實際的例子如風洞。
繼電器、閘電路替換了更早的石子、繩結、木珠、繩網、算盤等,計算也從手動機械的操作進步為機器自動的操作,這是乙個大的跨越。操作是機器自動執行的,要進行什麼操作還得人告訴計算機。機器本身只懂得二進位制,沒人願意輸入二進位製碼告訴計算機做什麼,這樣的工作太枯燥,於是人們發展了高階程式語言用來編寫程式。高階程式語言是更接近於自然語言,或接近領域原生的表示方式的程式語言,高階語言編寫的程式通過編譯器或直譯器的解析,翻譯為機器可執行的二進位制目標**。程式語言是真實在用的人工語言,且數量眾多。高階語言的程式設計回到用一種人工語言符號來模擬機器物理過程,因此每一實用的高階語言也會要求滿足圖靈完備,即支援分支、迴圈的語句。各類計算機程式語言的通用語法採用的是巴斯克正規化(bnf正規化),bnf正規化等價喬姆斯基的第2型文法,即上下文無關文法,前面說過,這型語法對應的自動機就是圖靈機。
再來看編譯器的工作。編譯器所做的是分析程式語言編寫的程式,包括詞法、語法的分析,語義的分析(這是常見的說法,是否正確先忽略),其中所用的方法很多與自然語言分析中所用的方法類似。比如將語句分析為語法樹,分析基於給定的文法:g=(n,∑,p,s),從結果來看:語法樹的每一葉子節點對應了終結符集中的乙個,每一中間節點對應了非終結符集中的乙個,中間節點到中間節點或葉子節點會對應乙個產生式規則。編譯器完成分析後,經過優化後生成目標**。在這些領域的設計工作,喬姆斯基的形式文法是基礎的理論與工具,並有著良好的應用效果,相比較,它們在自然語言的應用沒有太多的進展。
二進位制 二進位制起源
現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...
判斷二進位製半整數(二進位制)
10年後,tokitsukaze大佬已經變成了年收入超百萬的的精英程式設計師,家裡沒錢也沒礦的teitoku,找tokitsukaze大佬借1000塊錢,然後tokitsukaze大佬說,借你1024吧,湊個整數。沒錯在2進製下1024是 二進位制整數 乙個正整數滿足其值為2的k次方 k為正整數 我...
mysql二進位制 MySql二進位制連線方式詳解
使用mysql二進位制方式連線 您可以使用mysql二進位制方式進入到mysql命令提示符下來連線mysql資料庫。例項以下是從命令列中連線mysql伺服器的簡單例項 root host mysql u root p enter password 在登入成功後會出現 mysql 命令提示視窗,你可以...