[TOC]
1.至親密友
1.1 編碼是什么?
- 一種用來在機器和人之間傳遞信息的方式
- 編碼就是交流
1.2 生活中的編碼方式:
- 聲音
對任何能聽見我們的聲音并理解我們所說的語言的人來說,我們發出的聲音所形成的詞語是一種可識別的編碼. - 書面語
- 手語
聾啞人
1.3 為什么需要各種不同的編碼?
我們使用各種不同的編碼來為我們自己的交流服務,因為有些編碼有時比其他編碼更便捷.
如果一種編碼可以用在其他編程無法取代的地方,那么它就是一種有用的編碼.
1.4 那么人類如何與計算機溝通?
不同類型的信息需要它們各自的編碼.
1.5 如何增加溝通效率?
縮減編碼的數字為2.
為了使編碼發送的速度最快,你可以把
- 莫爾斯編碼口語版把講話內容縮減到只剩下2個聲音.
- 文字簡化成點和劃
事實上,兩個不同的事物,只要經過適當的組合,就可以表示所有類型的信息.
2.編碼與組合
2.1 發展史:
莫爾斯編碼其實是伴隨著電報機的問世而被發明的。
正如通過研究莫爾斯碼我們可以很方便地理解編碼的本質一樣,通過電報機來了解計算機硬件也是個不錯的途徑。
2.2 莫爾斯碼可以表示的字數:
點和劃的組合可以表示任何你想要的任意數目的碼字。
2.3 二進制碼:
莫爾斯碼也被稱作二進制碼(Binary Code),因為這種編碼的組成元素只有兩個————“點”和“劃”。
類似硬幣,只有正反面。
二元對象(like硬幣)和二進制碼(like莫爾斯碼)常常使用2的乘方來進行描述
2.4 組合分析
關于二進制編碼的分析工作,其實是數學的一個分支,稱作“組合學”或“組合分析”。
傳統意義上來說,因為組合分析涉及類似像扔硬幣,擲骰子等需要對其組合數目進行推算的問題,所以它經常被應用到概率和統計學中。
3.布萊葉盲文與二進制碼
3.1 布萊葉盲文是什么?
3.2 布萊葉盲文特點?
數字標示符和取消“數字標示狀態”的字母標示符,改變了后面編碼的意義(字母->數字,數字->字母)。
這些編碼通常被稱為“優先碼”(precedence codes)或者”換擋碼“(shift codes)。它們改變作用域內編碼的含義,直到作用域結束
代碼大全2 里面有提到作用域,作用域就像變量在程序中的知名度
逃逸碼(escape codes) :讓你“逃離”對編碼串單調的,一成不變的解析,而轉入一種新的解析方式中。
3.3 盲文與Binary Code有啥聯系?
盲文中的點碼都是二進制的。一個單獨的點不是平的就是凸起的。
4.手電筒的剖析
4.1 一些原理:
- 研究電流工作原理的、最主流的科學理論叫做“電子理論”,這套理論認為電流是由電子的運動而產生的。
- 電流產生的原因:一個原子中電子的數目一般情況下與質子數目相同。但在某些情況下,電子可能從原子中脫離。
- 電路中,某原子所含有的一個電子逃逸到它相鄰的下一個原子中,與此同時,這個原子又從相鄰的上一個原子中獲取一個電子,而失去電子的原子又會從與其相鄰的一個原子獲得電子,如此循環,電路中的電子不斷地從一個原子移動到下一個原子,就形成了電流。
4.2 手電筒與二進制的聯系?
- 開關:閉合&斷開
- 電流:有&無
- 燈泡:亮&不亮
就像二進制碼一樣,沒有介于兩者之間的狀態。
二進制碼與電氣電路之間有很大的相似性。
5.繞過拐角的通信
5.1 與鄰居的微型發報系統:
使用導線,我們不僅可以構建出一個可以繞過拐角的、能夠在視角之外的發報系統,而且無需受距離的限制。我們可以跨越成千上百英里來進行通信,只需鋪足夠長的線路即可。
5.2 現實難題:如何做出很長的導線?
在150年前,人們在鋪設第一個跨越美洲和歐洲的電報系統時,這些都是面臨的問題。如果忽視了線路直徑和高電壓的因素,電報線路將完全無法持續工作。
根據設計方案,系統距離跨度的極限是200英里。這個長度與紐約和加利福尼亞數千里的距離相比,還是有很大差距的。
茨威格《人類群星閃耀時》里面鋪海底電纜那個?
這個難題的解決方案——不是給手電筒,而是給“滴滴答答”的近代電報系統的————盡管它只不過是個很簡陋的裝置,但是正是基于這個裝置,整個計算機系統才被構建出來。
6.電報器與繼電器
6.1 通訊的歷史背景:
19世紀早期,人們可以進行即時通訊或遠距離通信,但是不能同時做到這兩點。即時通訊受聲音傳播距離的限制,或者受視野的限制。使用信件可以進行更遠距離的通信,但是寄信耗費的時間太多,并且需要馬匹、火車或輪船。
6.2 怎么提高遠距離通訊的速度?
使用電報(telegraph,遠距離書寫)
6.2.1 電報機的原理:
在線路的這一端采取一些措施,使線路的另一端發送某種變化。
理論基礎:
- 利用電磁現象。
-
電磁鐵是電報機的基礎。
在線路的一段閉合或斷開開關,可以使線路另一端的電磁鐵有所動作。
6.2.2 傳統電報機中發送信息的電鍵:
6.2.3 傳統電報機中的接收器:
6.2.4 電報機模型:
電報機的發明標志著現代通信的開始。
人們第一次能夠在視線或者聽力之外的距離范圍進行實時交流,而且信息傳遞速度很快。
更耐人尋味的是,這個發明使用了二進制碼。
但是在后來的電子和無線通信(包括電話、無線電、電視)所使用的通信模式中,二進制碼被廢棄了,
直到后來它又被應用在了電腦、光盤、數字影碟、數字衛星電視廣播和高清電視上。
6.3 怎么解決長導線帶來的大電阻的問題?
設置一個中繼系統。
6.3.1 中繼系統原始模型:
6.3.2 繼電器:
繼電器是一個意義非凡的設備。
它是一個可由電流控制的開關。
實際上,使用它,甚至可以裝配好一臺近乎完整的計算機來~
6.3.3 中繼系統最終模型:
在使用繼電器之前還要學會如何計數。
7.我們的十個數字
語言只不過是一種編碼。
數字似乎并不是那么容易隨文化的不同而改變。
數字是我們平常所能接觸到的一種最抽象的編碼。
十進制系統:
大多數文明都是建立在以10為基數的數字系統上的(有時候是以5為基數)
在這個意義上,以10為基數或使用十進制數字系統完全是隨意的。
如今我們所用的數字系統通常被稱為阿拉伯數字,也可以稱為印度-阿拉伯數字系統。
阿拉伯數字系統的特點
- 數字和位置有關:一個數字的位置不同,其代表數量也不同。
- 沒有代表10的專門符號
- 多了新符號“0”
十進制計數系統易于計數,但是不適用于每種情況,比如對卡通人物沒有任何意義。
8.十的替代品
8.1 八進制系統:
8.2 四進制系統:
8.3 二進制系統:
特點:
- 二進制最大的問題就是數字用完得很快。
- 二進制數的長度增長得很快而非數值增大得快。
通過將數字系統減少至只有0和1兩個數字的二進制數字系統,已經是最簡單的數字系統了。
二進制數字系統在算術與電子技術之間搭起了一座橋梁。
- 電線:有電則1,無電則0
二進制數與計算機之間有著緊密的聯系。
9.二進制數:
你可以選擇很多方法來表示“是”或者“不是”。
不需要用一句話、一個單詞甚至一個字母來表達。
你需要的是一個比特,也就是只需要一個0或1即可。
就如前面提到的,十進制與其他數字系統相比并沒有什么不同,只是我們通過使用它來計數。
但是,二進制系統有特殊性:
- 它是人們所能得到的最簡單的數字系統
9.1 bit的意義:
本義:
- bit(比特)代表binary digit(二元數字)
一般的意義:
- “一小部分,程度很低或者數量很少”
1bit ———— 一個二進制數字位 ———— 確實是一個非常小的量。
在計算機時代里的意義:
- bit被看做是組成信息塊的基本單位
9.2 為什么要用二進制數來傳達信息?
二進制數不是傳達信息的唯一方法。字母、單詞、莫爾斯碼、布萊葉盲文和十進制數均可以。
關鍵:
- bit所傳遞的信息量極少
- 1bit 是可能存在的最小的信息量,任何低于1bit內容都根本算不上是信息。
信息是指多個可能性中的一種。
所有可以被轉換成對兩種或多種可能性的選擇的信息,都可以用比特來表示。
利用二進制表示信息的一個額外的好處:
- 我們可以清楚地知道我們是否已經想到了所有的可能性
9.3 bit在日常的體現:
通用產品代碼(UPC,Universal Product Code):
整個UPC只不過是一串95位二進制數。
9.4 bit的總結:
bit可以表示文字、圖片、聲音、音樂、電影,產品編碼、膠片速度、影評結果、英國軍隊的入侵,以及心愛之人的意圖。
但是,從根本來說,bit是數字。
在用Bit表示其他信息的時候,我們所要做的就是計算有多少種可能性。
這決定了我們需要的比特位數,以便每種可能性都可以分配到一個編號。
bit在邏輯學中也很重要。
邏輯學是哲學和數學的奇特融合,其主要目的就是確定某個陳述是真(1)還是假(0)。
10.邏輯與開關
10.1 布爾代數:
對于古希臘人而言,邏輯是追求真理的過程中使用的一種分析方法,是一種哲學形式.
而布爾認為可以找到一種數學形式來描述邏輯,因此發明了布爾代數.
布爾把代數從數的概念中抽離出來使其更加抽象
在布爾代數中,操作數不是數字而是類(class)
一個類就是一個事物的群體,后來也被稱為集合(set)
10.1.1 布爾代數的符號:
+: 表示兩個集合的并集
x : 表示兩個集合的交集
1 : 全集
0 : 空集
10.1.2 布爾代數與傳統代數的最大區別:
F x F = F
- 布爾代數:
母貓和母貓的交集依然是母貓 - 傳統代數:
該式子不成立
10.2 布爾代數與電路的聯系:
布爾代數可以用開關,導線和燈泡組成的電路來實現.
10.2.1.AND運算---串聯電路
10.2.2.OR運算---并聯電路:
10.3 歷史背景:
在19世紀,沒有人將布爾代數中的AND和OR同線路中的開關串聯及并聯關聯到一起.
甚至連計算機革命的偶像式人物查爾斯-巴貝奇也沒有,他與布爾處在同一時代并且了解布爾的工作.巴貝奇先設計了差分機和分析引擎,這些在一個世紀之后都被看做是現代計算機的前身.
其實可以根據一臺電報器來創建計算機,而非使用齒輪和杠桿來實現計算.
11.門
繼電器像開關一樣,可以串聯或并聯在電路中執行簡單的邏輯任務.
這種繼電器的組合叫做邏輯門(logic gate).
邏輯門:
邏輯門的工作方式是什么?
讓電流通過或者阻止電流通過.
布爾代數與電路的關系:
香農清晰闡述了: 電子工程師可以運用布爾代數的所有工具去設計開關電路.如果你簡化了一個描述電路的布爾表達式,那么你也可以簡化相應的電路.
每個開關都是一個二進制數.
繼電器:
繼電器是什么?
繼電器像開關一樣,可以串聯或并聯在電路中執行簡單的邏輯任務.這種繼電器的組合叫做邏輯門(logic gate)繼電器的優點:
繼電器可以被其他繼電器所控制,而不必由人工控制.
連接繼電器是建立邏輯門的關鍵.
四種基本邏輯門
1.與門 AND:
兩個繼電器的串聯被稱為一個"與門".
-
電路:
符號:
三輸入端與門:
3個繼電器的串聯---三輸入端與門
- 電路:
- 符號:
2.或門 OR :
2個繼電器的并聯---或門
任何一個繼電器有電壓都可以點亮燈泡.
-
電路:
-
符號:
3. 或非門 NOR:
結果與或門相反
-
符號:
輸出表:
全0為1,其余為0
4. 與非門 NAND:
和與門相反
- 符號:
- 輸出表:
反向器(inverter):
開關閉合,燈泡就熄滅.
- 電路:
- 符號:
- 作用:
能將0(低電平)轉換成為 1 (高電平)
2-4譯碼器:
由4個與門和2個反向器連接成的電路叫做2-4譯碼器
輸入:
2個二進制位,各種組合共表示4個不同的值輸出:
4個信號,任何時刻只能有一個是1 ,至于哪個是1取決于兩個輸入.電路:
緩沖器(buffer) :
將4個邏輯門和1個反向器組合在一起,就是原始的繼電器.
也稱為緩沖器.
- 符號:
- 輸入輸出:
- 作用:
- 輸入信號很微弱的時候,可以加強信號
- 延遲信號(繼電器需要幾分之一秒才會被觸發 )
摩根定律:
1. 摩根定律是什么?
關于命題邏輯規律的一對法則
2. 摩根定律的表達式?
3. 兩組等價關系:
這兩組等價關系就是摩根定律在電路中的實現
4. 摩根定律與布爾代數的關系:
摩根定律是**簡化布爾表達式的一種重要手段,因此也可以用來簡化電路
12. 二進制加法器
加法是算術運算中最基本的運算,如果想搭建一臺計算機,首先就要造出可以計算兩個數的和的器件.
12.1 二進制的加法法則:
帶有前導零的形式.每個結果都是2位的值.
加法位(sum bit):
進位位(carry bit):
1+1=0,進位為1
12.2. 8位加法器真實模型:
范圍:0000-0000到1111-1111 即十進制的0到255
12.3 加法器中的電路設計:
12.3.1 半加器(half adder):
- 為什么叫半加器:
半加器可以將2個二進制數相加,得出一個加法位和一個進位位.但是絕大多數二進制數是多與1位的.
半加器沒有做的是: 將之前一次的加法可能產生的進位位納入下一次運算.
-
對照:
-
電路:
-
符號:
12.3.2 全加器(Full Adder):
- 電路:
- 符號:
12.3.3 8位加法器:
- 模型:
每個Full Adder的進位輸出都作為下一個全加器的進位輸入.
12.3.4 16位加法器:
模型:
12.3.5 優化:
- 更快的加法器運用了被稱為"前置進位"的電路來提高運算速度.
- 晶體管取代繼電器.