導(dǎo)讀:
用這句話描述計(jì)算機(jī)在好不過:
道生一,一生二,二生三,三生萬物。
簡(jiǎn)介:
離第一次看這本書已經(jīng)有10個(gè)月左右的時(shí)間了, 特意買了紙質(zhì)版從新讀了一遍,關(guān)于編碼的意義又變得更加明確了。 書中由淺入深的介紹了計(jì)算機(jī)的發(fā)明創(chuàng)造過程,印象最深的就是繼電器與振蕩器, 也正是 振蕩器與 繼電器 構(gòu)成了計(jì)算機(jī)的基石。通過線路間的串聯(lián)與并聯(lián)構(gòu)建能夠模擬構(gòu)建布爾代數(shù) 從而實(shí)現(xiàn)了電路的數(shù)字化, 而其中最重要的人物便是香農(nóng),當(dāng)然還有另外兩個(gè)人物 邱奇 與 圖靈 書中并未做過多介紹。
脈絡(luò):
在我看來書中已經(jīng)將脈絡(luò)劃分的很好了,然后我也并不認(rèn)為我能夠在將脈絡(luò)進(jìn)行更好的劃分,所以嚴(yán)格的來說不應(yīng)稱其為脈絡(luò)也許用——“讀書之后的印象的鏈接”來形容更好一些。
我對(duì)這些印象做了一個(gè)簡(jiǎn)單的梳理:
布爾代數(shù)->電路->布爾代數(shù)與電路的結(jié)合->編碼
以下內(nèi)容可以略過
關(guān)于上面的內(nèi)容(布爾代數(shù)->電路->布爾代數(shù)與電路的結(jié)合->編碼)我并不能進(jìn)行一個(gè)詳細(xì)的闡述,所以我們從實(shí)用的目的,帶著問題出發(fā),只用我們需要的:
小明去超市買糖,說:"阿姨我要蘋果味的糖或帶印有喜洋洋的草莓味的糖"
讓我們用符號(hào)對(duì)上面的話進(jìn)行代指(替換)
首先讓我們用下面的符號(hào)代指物品:
p :蘋果味
t :糖
x :喜洋洋
c :草莓味
接著用下面的符號(hào)代指關(guān)系:
* :必須同時(shí)滿足
+ :至少滿足一個(gè)?
() :括號(hào)內(nèi)的內(nèi)容是一個(gè)整體
然后對(duì)對(duì)話進(jìn)行精簡(jiǎn):
蘋果味的糖或帶印有喜洋洋的草莓味的糖
最后用剛才的符號(hào)對(duì)精簡(jiǎn)后的對(duì)話進(jìn)行描述:
(p*t)+(x*c*t)
場(chǎng)景1.超市阿姨拿過來一個(gè)印喜洋洋的菠蘿味的糖:
我們發(fā)現(xiàn)它有三個(gè)條件與式子中+右面的部分的條件的個(gè)數(shù)相同
x*c*t
然后做一個(gè)簡(jiǎn)單的比較
t與糖相同
x 與 喜洋洋相同
c與菠蘿味不同
因?yàn)槭?所以它們之間的關(guān)系必須同時(shí)滿足,而c并沒有滿足,所以不滿足條件,小明沒有要
場(chǎng)景2.超市阿姨拿過來一個(gè)印喜洋洋的草莓味的糖:
我們發(fā)現(xiàn)它有三個(gè)條件與式子中+右面的部分的條件的個(gè)數(shù)相同。
x*c*t
然后做一個(gè)簡(jiǎn)單的比較
t與糖相同
x 與 喜洋洋相同
c與菠蘿味相同
因?yàn)槭?所以它們之間的關(guān)系必須同時(shí)滿足,所以滿足條件,小明要了。
一.布爾代數(shù)
然后上面的例子和計(jì)算機(jī)又有什么關(guān)系呢?
讓我們來看看用布爾代數(shù)的一些介紹(部分):
最簡(jiǎn)單的布爾代數(shù)只有兩個(gè)元素0和1,并通過如下規(guī)則定義:

它應(yīng)用于邏輯中,解釋0為“假”,1為“真”,∧為“與”,∨為“或”,?為“非”。涉及變量和布爾運(yùn)算的表達(dá)式代表了陳述形式,兩個(gè)這樣的表達(dá)式可以使用上面的公理證實(shí)為等價(jià)的,當(dāng)且僅當(dāng)對(duì)應(yīng)的陳述形式是邏輯等價(jià)的。
有了上面的介紹,然后可以用布爾代數(shù)對(duì)上面的例子 “(p*t)+(x*c*t)” 進(jìn)行重寫:
用∧代替* ,用∨代替+ ,可以得到:
(p∧t)∨(x∧c∧t)
將場(chǎng)景1進(jìn)行代入:
p 蘋果味不存在 為假 =0
t與糖相同 為真 =1
x 與 喜洋洋相同 為真 =1
c與菠蘿味不同 為假?=0
=(0∧1)∨(1∧0∧1)
=0∨0
=0
結(jié)果為假所以小明沒有要。
將場(chǎng)景2進(jìn)行代入:
p 蘋果味不存在 為假 =0
t與糖相同 為真 =1
x 與 喜洋洋相同 為真 =1
c與菠蘿味相同 為真 =1
=(0∧1)∨(1∧1∧1)
=0∨1
=1
結(jié)果為真所以小明要了。
二.電路
有了布爾代數(shù)還是不夠,我們要怎樣在電路中表示這種關(guān)系呢?
首先我們先了解一下電路的鏈接方式:
電路的鏈接有兩種方式——串聯(lián)和并聯(lián)。在串聯(lián)電路中只要有一個(gè)斷開,整個(gè)電路意味著都斷了。在并聯(lián)電路中只要有一個(gè)閉合,電路就是通的。
(如果有配圖效果會(huì)更好。。。自己畫個(gè)丑圖)

圖中每個(gè)電路中有兩開關(guān)根據(jù)開關(guān)的閉合和斷開可以有四種不同的狀態(tài) 其值如下表:

然后對(duì)照?qǐng)D1與圖3是不是有什么發(fā)現(xiàn)呢?
圖1中的或運(yùn)算可以用圖2中的并聯(lián)的方式來表示,圖1中的與運(yùn)算可以用圖2中的串聯(lián)的方式來表示。
三.布爾代數(shù)+電路
這是布爾代數(shù)的一小步,也是電路的一小步,但是數(shù)字化電路的一大步
現(xiàn)在最關(guān)鍵的一步就是將布爾代數(shù)(p∧t)∨(x∧c∧t)用電路來表示(用斷開表示0,用閉合表示1),然后以燈泡亮了表示滿足條件否則不滿足。

將場(chǎng)景1進(jìn)行代入(省略中間步驟):
(p∧t)∨(x∧c∧t) = (0∧1)∨(1∧0∧1)?

燈泡沒有亮,不滿足條件,小明沒有要。
將場(chǎng)景2進(jìn)行代入(省略中間步驟):
(p∧t)∨(x∧c∧t) = (0∧1)∨(1∧1∧1)

燈泡沒有亮,滿足條件,小明要了。
四.編碼
什么是編碼?
用一組數(shù)據(jù)代指另一組數(shù)據(jù),并能夠知道代指的數(shù)據(jù)是什么,在剛開始我們用 p來表示蘋果,t來表示糖,這就是我們自己定義的編碼,在用電路對(duì)布爾表達(dá)式重寫后我們用燈泡的亮與否表示是否滿足條件這也是我們自己定義的編碼,但如果我用t來表示糖,你用t來表示桃子,就會(huì)出現(xiàn)混亂,因此需要避免這種情況,我們兩個(gè)可以用同一套編碼用t1來表示糖t2表示桃子,這樣就不會(huì)有問題了,但是別人如何知道t1是糖,t2是桃子呢,于是我們大家坐下來重新制定一套屬于我們大家的編碼。
維基百科上是這樣定義的:
編碼是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過程。解碼,是編碼的逆過程
總結(jié)
其實(shí)最關(guān)鍵的繼電器我并沒有講到, 而通過繼電器實(shí)現(xiàn)的反向器與緩沖器是構(gòu)建整個(gè)計(jì)算機(jī)的關(guān)鍵之所在,然后書中的內(nèi)容真的非常好,可以更加深入的了解計(jì)算機(jī)的構(gòu)造與原理,十分適合當(dāng)做入門書來看,這讀完之后還有一些地方理解的不夠透徹 比如 RAM的實(shí)現(xiàn) 不過相比于第一次看這本書的理解程度還是有些進(jìn)步的,在過年的這段時(shí)間內(nèi)也會(huì)從新將一些概念重新梳理一下,再次進(jìn)行拜讀。
最后以 00生01, 01生10, 10生11, 11生00 作為結(jié)尾