[TOC]
我們使用各種不同的編碼來為我們自己的交流服務(wù),因為有些編碼有時比其他編碼更便捷.
如果一種編碼可以用在其他編程無法取代的地方,那么它就是一種有用的編碼.
不同類型的信息需要它們各自的編碼.
縮減編碼的數(shù)字為2.
為了使編碼發(fā)送的速度最快,你可以把
事實上,兩個不同的事物,只要經(jīng)過適當(dāng)?shù)慕M合,就可以表示所有類型的信息.
莫爾斯編碼其實是伴隨著電報機的問世而被發(fā)明的。
正如通過研究莫爾斯碼我們可以很方便地理解編碼的本質(zhì)一樣,通過電報機來了解計算機硬件也是個不錯的途徑。
點和劃的組合可以表示任何你想要的任意數(shù)目的碼字。
莫爾斯碼也被稱作二進制碼(Binary Code),因為這種編碼的組成元素只有兩個————“點”和“劃”。
類似硬幣,只有正反面。
二元對象(like硬幣)和二進制碼(like莫爾斯碼)常常使用2的乘方來進行描述
關(guān)于二進制編碼的分析工作,其實是數(shù)學(xué)的一個分支,稱作“組合學(xué)”或“組合分析”。
傳統(tǒng)意義上來說,因為組合分析涉及類似像扔硬幣,擲骰子等需要對其組合數(shù)目進行推算的問題,所以它經(jīng)常被應(yīng)用到概率和統(tǒng)計學(xué)中。
數(shù)字標(biāo)示符和取消“數(shù)字標(biāo)示狀態(tài)”的字母標(biāo)示符,改變了后面編碼的意義(字母->數(shù)字,數(shù)字->字母)。
這些編碼通常被稱為“優(yōu)先碼”(precedence codes)或者”換擋碼“(shift codes)。它們改變作用域內(nèi)編碼的含義,直到作用域結(jié)束
代碼大全2 里面有提到作用域,作用域就像變量在程序中的知名度
逃逸碼(escape codes) :讓你“逃離”對編碼串單調(diào)的,一成不變的解析,而轉(zhuǎn)入一種新的解析方式中。
盲文中的點碼都是二進制的。一個單獨的點不是平的就是凸起的。
在150年前,人們在鋪設(shè)第一個跨越美洲和歐洲的電報系統(tǒng)時,這些都是面臨的問題。如果忽視了線路直徑和高電壓的因素,電報線路將完全無法持續(xù)工作。
根據(jù)設(shè)計方案,系統(tǒng)距離跨度的極限是200英里。這個長度與紐約和加利福尼亞數(shù)千里的距離相比,還是有很大差距的。
茨威格《人類群星閃耀時》里面鋪海底電纜那個?
這個難題的解決方案——不是給手電筒,而是給“滴滴答答”的近代電報系統(tǒng)的————盡管它只不過是個很簡陋的裝置,但是正是基于這個裝置,整個計算機系統(tǒng)才被構(gòu)建出來。
19世紀(jì)早期,人們可以進行即時通訊或遠距離通信,但是不能同時做到這兩點。即時通訊受聲音傳播距離的限制,或者受視野的限制。使用信件可以進行更遠距離的通信,但是寄信耗費的時間太多,并且需要馬匹、火車或輪船。
使用電報(telegraph,遠距離書寫)
在線路的這一端采取一些措施,使線路的另一端發(fā)送某種變化。
理論基礎(chǔ):
電報機的發(fā)明標(biāo)志著現(xiàn)代通信的開始。
人們第一次能夠在視線或者聽力之外的距離范圍進行實時交流,而且信息傳遞速度很快。
更耐人尋味的是,這個發(fā)明使用了二進制碼。
但是在后來的電子和無線通信(包括電話、無線電、電視)所使用的通信模式中,二進制碼被廢棄了,
直到后來它又被應(yīng)用在了電腦、光盤、數(shù)字影碟、數(shù)字衛(wèi)星電視廣播和高清電視上。
設(shè)置一個中繼系統(tǒng)。
繼電器是一個意義非凡的設(shè)備。
它是一個可由電流控制的開關(guān)。
實際上,使用它,甚至可以裝配好一臺近乎完整的計算機來~
在使用繼電器之前還要學(xué)會如何計數(shù)。
語言只不過是一種編碼。
數(shù)字似乎并不是那么容易隨文化的不同而改變。
數(shù)字是我們平常所能接觸到的一種最抽象的編碼。
大多數(shù)文明都是建立在以10為基數(shù)的數(shù)字系統(tǒng)上的(有時候是以5為基數(shù))
在這個意義上,以10為基數(shù)或使用十進制數(shù)字系統(tǒng)完全是隨意的。
如今我們所用的數(shù)字系統(tǒng)通常被稱為阿拉伯?dāng)?shù)字,也可以稱為印度-阿拉伯?dāng)?shù)字系統(tǒng)。
阿拉伯?dāng)?shù)字系統(tǒng)的特點
十進制計數(shù)系統(tǒng)易于計數(shù),但是不適用于每種情況,比如對卡通人物沒有任何意義。
通過將數(shù)字系統(tǒng)減少至只有0和1兩個數(shù)字的二進制數(shù)字系統(tǒng),已經(jīng)是最簡單的數(shù)字系統(tǒng)了。
二進制數(shù)字系統(tǒng)在算術(shù)與電子技術(shù)之間搭起了一座橋梁。
二進制數(shù)與計算機之間有著緊密的聯(lián)系。
你可以選擇很多方法來表示“是”或者“不是”。
不需要用一句話、一個單詞甚至一個字母來表達。
你需要的是一個比特,也就是只需要一個0或1即可。
就如前面提到的,十進制與其他數(shù)字系統(tǒng)相比并沒有什么不同,只是我們通過使用它來計數(shù)。
但是,二進制系統(tǒng)有特殊性:
本義:
一般的意義:
1bit ———— 一個二進制數(shù)字位 ———— 確實是一個非常小的量。
在計算機時代里的意義:
二進制數(shù)不是傳達信息的唯一方法。字母、單詞、莫爾斯碼、布萊葉盲文和十進制數(shù)均可以。
關(guān)鍵:
信息是指多個可能性中的一種。
所有可以被轉(zhuǎn)換成對兩種或多種可能性的選擇的信息,都可以用比特來表示。
利用二進制表示信息的一個額外的好處:
通用產(chǎn)品代碼(UPC,Universal Product Code):
整個UPC只不過是一串95位二進制數(shù)。
bit可以表示文字、圖片、聲音、音樂、電影,產(chǎn)品編碼、膠片速度、影評結(jié)果、英國軍隊的入侵,以及心愛之人的意圖。
但是,從根本來說,bit是數(shù)字。
在用Bit表示其他信息的時候,我們所要做的就是計算有多少種可能性。
這決定了我們需要的比特位數(shù),以便每種可能性都可以分配到一個編號。
bit在邏輯學(xué)中也很重要。
邏輯學(xué)是哲學(xué)和數(shù)學(xué)的奇特融合,其主要目的就是確定某個陳述是真(1)還是假(0)。
對于古希臘人而言,邏輯是追求真理的過程中使用的一種分析方法,是一種哲學(xué)形式.
而布爾認為可以找到一種數(shù)學(xué)形式來描述邏輯,因此發(fā)明了布爾代數(shù).
布爾把代數(shù)從數(shù)的概念中抽離出來使其更加抽象
在布爾代數(shù)中,操作數(shù)不是數(shù)字而是類(class)
一個類就是一個事物的群體,后來也被稱為集合(set)
+: 表示兩個集合的并集
x : 表示兩個集合的交集
1 : 全集
0 : 空集
F x F = F
布爾代數(shù)可以用開關(guān),導(dǎo)線和燈泡組成的電路來實現(xiàn).
在19世紀(jì),沒有人將布爾代數(shù)中的AND和OR同線路中的開關(guān)串聯(lián)及并聯(lián)關(guān)聯(lián)到一起.
甚至連計算機革命的偶像式人物查爾斯-巴貝奇也沒有,他與布爾處在同一時代并且了解布爾的工作.巴貝奇先設(shè)計了差分機和分析引擎,這些在一個世紀(jì)之后都被看做是現(xiàn)代計算機的前身.
其實可以根據(jù)一臺電報器來創(chuàng)建計算機,而非使用齒輪和杠桿來實現(xiàn)計算.
繼電器像開關(guān)一樣,可以串聯(lián)或并聯(lián)在電路中執(zhí)行簡單的邏輯任務(wù).
這種繼電器的組合叫做邏輯門(logic gate).
讓電流通過或者阻止電流通過.
香農(nóng)清晰闡述了: 電子工程師可以運用布爾代數(shù)的所有工具去設(shè)計開關(guān)電路.如果你簡化了一個描述電路的布爾表達式,那么你也可以簡化相應(yīng)的電路.
每個開關(guān)都是一個二進制數(shù).
繼電器是什么?
繼電器像開關(guān)一樣,可以串聯(lián)或并聯(lián)在電路中執(zhí)行簡單的邏輯任務(wù).這種繼電器的組合叫做邏輯門(logic gate)
繼電器的優(yōu)點:
繼電器可以被其他繼電器所控制,而不必由人工控制.
連接繼電器是建立邏輯門的關(guān)鍵.
兩個繼電器的串聯(lián)被稱為一個'與門'.
電路:
符號:
3個繼電器的串聯(lián)---三輸入端與門
2個繼電器的并聯(lián)---或門
任何一個繼電器有電壓都可以點亮燈泡.
電路:
符號:
結(jié)果與或門相反
符號:
輸出表:
全0為1,其余為0
和與門相反
開關(guān)閉合,燈泡就熄滅.
由4個與門和2個反向器連接成的電路叫做2-4譯碼器
輸入:
2個二進制位,各種組合共表示4個不同的值
輸出:
4個信號,任何時刻只能有一個是1 ,至于哪個是1取決于兩個輸入.
電路:
將4個邏輯門和1個反向器組合在一起,就是原始的繼電器.
也稱為緩沖器.
關(guān)于命題邏輯規(guī)律的一對法則
這兩組等價關(guān)系就是摩根定律在電路中的實現(xiàn)
摩根定律是**簡化布爾表達式的一種重要手段,因此也可以用來簡化電路
加法是算術(shù)運算中最基本的運算,如果想搭建一臺計算機,首先就要造出可以計算兩個數(shù)的和的器件.
帶有前導(dǎo)零的形式.每個結(jié)果都是2位的值.
加法位(sum bit):
進位位(carry bit):
1+1=0,進位為1
范圍:0000-0000到1111-1111 即十進制的0到255
對照:
電路:
符號:
模型: