[TOC]
1.至親密友
1.1 編碼是什么?
- 一種用來(lái)在機(jī)器和人之間傳遞信息的方式
- 編碼就是交流
1.2 生活中的編碼方式:
- 聲音
對(duì)任何能聽(tīng)見(jiàn)我們的聲音并理解我們所說(shuō)的語(yǔ)言的人來(lái)說(shuō),我們發(fā)出的聲音所形成的詞語(yǔ)是一種可識(shí)別的編碼. - 書(shū)面語(yǔ)
- 手語(yǔ)
聾啞人
1.3 為什么需要各種不同的編碼?
我們使用各種不同的編碼來(lái)為我們自己的交流服務(wù),因?yàn)橛行┚幋a有時(shí)比其他編碼更便捷.
如果一種編碼可以用在其他編程無(wú)法取代的地方,那么它就是一種有用的編碼.
1.4 那么人類如何與計(jì)算機(jī)溝通?
不同類型的信息需要它們各自的編碼.
1.5 如何增加溝通效率?
縮減編碼的數(shù)字為2.
為了使編碼發(fā)送的速度最快,你可以把
- 莫爾斯編碼口語(yǔ)版把講話內(nèi)容縮減到只剩下2個(gè)聲音.
- 文字簡(jiǎn)化成點(diǎn)和劃
事實(shí)上,兩個(gè)不同的事物,只要經(jīng)過(guò)適當(dāng)?shù)慕M合,就可以表示所有類型的信息.
2.編碼與組合
2.1 發(fā)展史:
莫爾斯編碼其實(shí)是伴隨著電報(bào)機(jī)的問(wèn)世而被發(fā)明的抡蛙。
正如通過(guò)研究莫爾斯碼我們可以很方便地理解編碼的本質(zhì)一樣衙吩,通過(guò)電報(bào)機(jī)來(lái)了解計(jì)算機(jī)硬件也是個(gè)不錯(cuò)的途徑百炬。
2.2 莫爾斯碼可以表示的字?jǐn)?shù):
點(diǎn)和劃的組合可以表示任何你想要的任意數(shù)目的碼字货徙。
2.3 二進(jìn)制碼:
莫爾斯碼也被稱作二進(jìn)制碼(Binary Code)候味,因?yàn)檫@種編碼的組成元素只有兩個(gè)————“點(diǎn)”和“劃”。
類似硬幣暗挑,只有正反面蝗肪。
二元對(duì)象(like硬幣)和二進(jìn)制碼(like莫爾斯碼)常常使用2的乘方來(lái)進(jìn)行描述
2.4 組合分析
關(guān)于二進(jìn)制編碼的分析工作,其實(shí)是數(shù)學(xué)的一個(gè)分支贰谣,稱作“組合學(xué)”或“組合分析”娜搂。
傳統(tǒng)意義上來(lái)說(shuō),因?yàn)?strong>組合分析涉及類似像扔硬幣吱抚,擲骰子等需要對(duì)其組合數(shù)目進(jìn)行推算的問(wèn)題涌攻,所以它經(jīng)常被應(yīng)用到概率和統(tǒng)計(jì)學(xué)中。
3.布萊葉盲文與二進(jìn)制碼
3.1 布萊葉盲文是什么频伤?
3.2 布萊葉盲文特點(diǎn)恳谎?
數(shù)字標(biāo)示符和取消“數(shù)字標(biāo)示狀態(tài)”的字母標(biāo)示符,改變了后面編碼的意義(字母->數(shù)字,數(shù)字->字母)因痛。
這些編碼通常被稱為“優(yōu)先碼”(precedence codes)或者”換擋碼“(shift codes)婚苹。它們改變作用域內(nèi)編碼的含義,直到作用域結(jié)束
代碼大全2 里面有提到作用域鸵膏,作用域就像變量在程序中的知名度
逃逸碼(escape codes) :讓你“逃離”對(duì)編碼串單調(diào)的膊升,一成不變的解析,而轉(zhuǎn)入一種新的解析方式中谭企。
3.3 盲文與Binary Code有啥聯(lián)系廓译?
盲文中的點(diǎn)碼都是二進(jìn)制的。一個(gè)單獨(dú)的點(diǎn)不是平的就是凸起的债查。
4.手電筒的剖析
4.1 一些原理:
- 研究電流工作原理的非区、最主流的科學(xué)理論叫做“電子理論”,這套理論認(rèn)為電流是由電子的運(yùn)動(dòng)而產(chǎn)生的盹廷。
- 電流產(chǎn)生的原因:一個(gè)原子中電子的數(shù)目一般情況下與質(zhì)子數(shù)目相同征绸。但在某些情況下,電子可能從原子中脫離俄占。
- 電路中管怠,某原子所含有的一個(gè)電子逃逸到它相鄰的下一個(gè)原子中,與此同時(shí)缸榄,這個(gè)原子又從相鄰的上一個(gè)原子中獲取一個(gè)電子渤弛,而失去電子的原子又會(huì)從與其相鄰的一個(gè)原子獲得電子,如此循環(huán)甚带,電路中的電子不斷地從一個(gè)原子移動(dòng)到下一個(gè)原子暮芭,就形成了電流。
4.2 手電筒與二進(jìn)制的聯(lián)系欲低?
- 開(kāi)關(guān):閉合&斷開(kāi)
- 電流:有&無(wú)
- 燈泡:亮&不亮
就像二進(jìn)制碼一樣,沒(méi)有介于兩者之間的狀態(tài)畜晰。
二進(jìn)制碼與電氣電路之間有很大的相似性砾莱。
5.繞過(guò)拐角的通信
5.1 與鄰居的微型發(fā)報(bào)系統(tǒng):
使用導(dǎo)線,我們不僅可以構(gòu)建出一個(gè)可以繞過(guò)拐角的凄鼻、能夠在視角之外的發(fā)報(bào)系統(tǒng)腊瑟,而且無(wú)需受距離的限制。我們可以跨越成千上百英里來(lái)進(jìn)行通信块蚌,只需鋪?zhàn)銐蜷L(zhǎng)的線路即可闰非。
5.2 現(xiàn)實(shí)難題:如何做出很長(zhǎng)的導(dǎo)線?
在150年前峭范,人們?cè)阡佋O(shè)第一個(gè)跨越美洲和歐洲的電報(bào)系統(tǒng)時(shí)财松,這些都是面臨的問(wèn)題。如果忽視了線路直徑和高電壓的因素,電報(bào)線路將完全無(wú)法持續(xù)工作辆毡。
根據(jù)設(shè)計(jì)方案菜秦,系統(tǒng)距離跨度的極限是200英里。這個(gè)長(zhǎng)度與紐約和加利福尼亞數(shù)千里的距離相比舶掖,還是有很大差距的球昨。
茨威格《人類群星閃耀時(shí)》里面鋪海底電纜那個(gè)?
這個(gè)難題的解決方案——不是給手電筒眨攘,而是給“滴滴答答”的近代電報(bào)系統(tǒng)的————盡管它只不過(guò)是個(gè)很簡(jiǎn)陋的裝置主慰,但是正是基于這個(gè)裝置,整個(gè)計(jì)算機(jī)系統(tǒng)才被構(gòu)建出來(lái)鲫售。
6.電報(bào)器與繼電器
6.1 通訊的歷史背景:
19世紀(jì)早期共螺,人們可以進(jìn)行即時(shí)通訊或遠(yuǎn)距離通信,但是不能同時(shí)做到這兩點(diǎn)龟虎。即時(shí)通訊受聲音傳播距離的限制璃谨,或者受視野的限制。使用信件可以進(jìn)行更遠(yuǎn)距離的通信鲤妥,但是寄信耗費(fèi)的時(shí)間太多佳吞,并且需要馬匹、火車或輪船棉安。
6.2 怎么提高遠(yuǎn)距離通訊的速度底扳?
使用電報(bào)(telegraph,遠(yuǎn)距離書(shū)寫(xiě))
6.2.1 電報(bào)機(jī)的原理:
在線路的這一端采取一些措施贡耽,使線路的另一端發(fā)送某種變化衷模。
理論基礎(chǔ):
- 利用電磁現(xiàn)象。
-
電磁鐵是電報(bào)機(jī)的基礎(chǔ)蒲赂。
在線路的一段閉合或斷開(kāi)開(kāi)關(guān)阱冶,可以使線路另一端的電磁鐵有所動(dòng)作。
6.2.2 傳統(tǒng)電報(bào)機(jī)中發(fā)送信息的電鍵:
6.2.3 傳統(tǒng)電報(bào)機(jī)中的接收器:
6.2.4 電報(bào)機(jī)模型:
電報(bào)機(jī)的發(fā)明標(biāo)志著現(xiàn)代通信的開(kāi)始滥嘴。
人們第一次能夠在視線或者聽(tīng)力之外的距離范圍進(jìn)行實(shí)時(shí)交流木蹬,而且信息傳遞速度很快。
更耐人尋味的是若皱,這個(gè)發(fā)明使用了二進(jìn)制碼镊叁。
但是在后來(lái)的電子和無(wú)線通信(包括電話、無(wú)線電走触、電視)所使用的通信模式中晦譬,二進(jìn)制碼被廢棄了,
直到后來(lái)它又被應(yīng)用在了電腦互广、光盤(pán)敛腌、數(shù)字影碟、數(shù)字衛(wèi)星電視廣播和高清電視上。
6.3 怎么解決長(zhǎng)導(dǎo)線帶來(lái)的大電阻的問(wèn)題迎瞧?
設(shè)置一個(gè)中繼系統(tǒng)夸溶。
6.3.1 中繼系統(tǒng)原始模型:
6.3.2 繼電器:
繼電器是一個(gè)意義非凡的設(shè)備。
它是一個(gè)可由電流控制的開(kāi)關(guān)凶硅。
實(shí)際上缝裁,使用它,甚至可以裝配好一臺(tái)近乎完整的計(jì)算機(jī)來(lái)~
6.3.3 中繼系統(tǒng)最終模型:
在使用繼電器之前還要學(xué)會(huì)如何計(jì)數(shù)足绅。
7.我們的十個(gè)數(shù)字
語(yǔ)言只不過(guò)是一種編碼捷绑。
數(shù)字似乎并不是那么容易隨文化的不同而改變。
數(shù)字是我們平常所能接觸到的一種最抽象的編碼氢妈。
十進(jìn)制系統(tǒng):
大多數(shù)文明都是建立在以10為基數(shù)的數(shù)字系統(tǒng)上的(有時(shí)候是以5為基數(shù))
在這個(gè)意義上粹污,以10為基數(shù)或使用十進(jìn)制數(shù)字系統(tǒng)完全是隨意的。
如今我們所用的數(shù)字系統(tǒng)通常被稱為阿拉伯?dāng)?shù)字首量,也可以稱為印度-阿拉伯?dāng)?shù)字系統(tǒng)壮吩。
阿拉伯?dāng)?shù)字系統(tǒng)的特點(diǎn)
- 數(shù)字和位置有關(guān):一個(gè)數(shù)字的位置不同,其代表數(shù)量也不同加缘。
- 沒(méi)有代表10的專門(mén)符號(hào)
- 多了新符號(hào)“0”
十進(jìn)制計(jì)數(shù)系統(tǒng)易于計(jì)數(shù)鸭叙,但是不適用于每種情況,比如對(duì)卡通人物沒(méi)有任何意義拣宏。
8.十的替代品
8.1 八進(jìn)制系統(tǒng):
8.2 四進(jìn)制系統(tǒng):
8.3 二進(jìn)制系統(tǒng):
特點(diǎn):
- 二進(jìn)制最大的問(wèn)題就是數(shù)字用完得很快沈贝。
- 二進(jìn)制數(shù)的長(zhǎng)度增長(zhǎng)得很快而非數(shù)值增大得快。
通過(guò)將數(shù)字系統(tǒng)減少至只有0和1兩個(gè)數(shù)字的二進(jìn)制數(shù)字系統(tǒng)勋乾,已經(jīng)是最簡(jiǎn)單的數(shù)字系統(tǒng)了宋下。
二進(jìn)制數(shù)字系統(tǒng)在算術(shù)與電子技術(shù)之間搭起了一座橋梁。
- 電線:有電則1辑莫,無(wú)電則0
二進(jìn)制數(shù)與計(jì)算機(jī)之間有著緊密的聯(lián)系学歧。
9.二進(jìn)制數(shù):
你可以選擇很多方法來(lái)表示“是”或者“不是”。
不需要用一句話各吨、一個(gè)單詞甚至一個(gè)字母來(lái)表達(dá)枝笨。
你需要的是一個(gè)比特,也就是只需要一個(gè)0或1即可绅你。
就如前面提到的,十進(jìn)制與其他數(shù)字系統(tǒng)相比并沒(méi)有什么不同昭躺,只是我們通過(guò)使用它來(lái)計(jì)數(shù)忌锯。
但是,二進(jìn)制系統(tǒng)有特殊性:
- 它是人們所能得到的最簡(jiǎn)單的數(shù)字系統(tǒng)
9.1 bit的意義:
本義:
- bit(比特)代表binary digit(二元數(shù)字)
一般的意義:
- “一小部分领炫,程度很低或者數(shù)量很少”
1bit ———— 一個(gè)二進(jìn)制數(shù)字位 ———— 確實(shí)是一個(gè)非常小的量偶垮。
在計(jì)算機(jī)時(shí)代里的意義:
- bit被看做是組成信息塊的基本單位
9.2 為什么要用二進(jìn)制數(shù)來(lái)傳達(dá)信息?
二進(jìn)制數(shù)不是傳達(dá)信息的唯一方法。字母似舵、單詞脚猾、莫爾斯碼、布萊葉盲文和十進(jìn)制數(shù)均可以砚哗。
關(guān)鍵:
- bit所傳遞的信息量極少
- 1bit 是可能存在的最小的信息量龙助,任何低于1bit內(nèi)容都根本算不上是信息。
信息是指多個(gè)可能性中的一種蛛芥。
所有可以被轉(zhuǎn)換成對(duì)兩種或多種可能性的選擇的信息提鸟,都可以用比特來(lái)表示。
利用二進(jìn)制表示信息的一個(gè)額外的好處:
- 我們可以清楚地知道我們是否已經(jīng)想到了所有的可能性
9.3 bit在日常的體現(xiàn):
通用產(chǎn)品代碼(UPC仅淑,Universal Product Code):
整個(gè)UPC只不過(guò)是一串95位二進(jìn)制數(shù)称勋。
9.4 bit的總結(jié):
bit可以表示文字、圖片涯竟、聲音赡鲜、音樂(lè)、電影庐船,產(chǎn)品編碼银酬、膠片速度、影評(píng)結(jié)果醉鳖、英國(guó)軍隊(duì)的入侵捡硅,以及心愛(ài)之人的意圖。
但是盗棵,從根本來(lái)說(shuō)壮韭,bit是數(shù)字。
在用Bit表示其他信息的時(shí)候纹因,我們所要做的就是計(jì)算有多少種可能性喷屋。
這決定了我們需要的比特位數(shù),以便每種可能性都可以分配到一個(gè)編號(hào)瞭恰。
bit在邏輯學(xué)中也很重要屯曹。
邏輯學(xué)是哲學(xué)和數(shù)學(xué)的奇特融合,其主要目的就是確定某個(gè)陳述是真(1)還是假(0)惊畏。
10.邏輯與開(kāi)關(guān)
10.1 布爾代數(shù):
對(duì)于古希臘人而言,邏輯是追求真理的過(guò)程中使用的一種分析方法,是一種哲學(xué)形式.
而布爾認(rèn)為可以找到一種數(shù)學(xué)形式來(lái)描述邏輯,因此發(fā)明了布爾代數(shù).
布爾把代數(shù)從數(shù)的概念中抽離出來(lái)使其更加抽象
在布爾代數(shù)中,操作數(shù)不是數(shù)字而是類(class)
一個(gè)類就是一個(gè)事物的群體,后來(lái)也被稱為集合(set)
10.1.1 布爾代數(shù)的符號(hào):
+: 表示兩個(gè)集合的并集
x : 表示兩個(gè)集合的交集
1 : 全集
0 : 空集
10.1.2 布爾代數(shù)與傳統(tǒng)代數(shù)的最大區(qū)別:
F x F = F
- 布爾代數(shù):
母貓和母貓的交集依然是母貓 - 傳統(tǒng)代數(shù):
該式子不成立
10.2 布爾代數(shù)與電路的聯(lián)系:
布爾代數(shù)可以用開(kāi)關(guān),導(dǎo)線和燈泡組成的電路來(lái)實(shí)現(xiàn).
10.2.1.AND運(yùn)算---串聯(lián)電路
10.2.2.OR運(yùn)算---并聯(lián)電路:
10.3 歷史背景:
在19世紀(jì),沒(méi)有人將布爾代數(shù)中的AND和OR同線路中的開(kāi)關(guān)串聯(lián)及并聯(lián)關(guān)聯(lián)到一起.
甚至連計(jì)算機(jī)革命的偶像式人物查爾斯-巴貝奇也沒(méi)有,他與布爾處在同一時(shí)代并且了解布爾的工作.巴貝奇先設(shè)計(jì)了差分機(jī)和分析引擎,這些在一個(gè)世紀(jì)之后都被看做是現(xiàn)代計(jì)算機(jī)的前身.
其實(shí)可以根據(jù)一臺(tái)電報(bào)器來(lái)創(chuàng)建計(jì)算機(jī),而非使用齒輪和杠桿來(lái)實(shí)現(xiàn)計(jì)算.
11.門(mén)
繼電器像開(kāi)關(guān)一樣,可以串聯(lián)或并聯(lián)在電路中執(zhí)行簡(jiǎn)單的邏輯任務(wù).
這種繼電器的組合叫做邏輯門(mén)(logic gate).
邏輯門(mén):
邏輯門(mén)的工作方式是什么?
讓電流通過(guò)或者阻止電流通過(guò).
布爾代數(shù)與電路的關(guān)系:
香農(nóng)清晰闡述了: 電子工程師可以運(yùn)用布爾代數(shù)的所有工具去設(shè)計(jì)開(kāi)關(guān)電路.如果你簡(jiǎn)化了一個(gè)描述電路的布爾表達(dá)式,那么你也可以簡(jiǎn)化相應(yīng)的電路.
每個(gè)開(kāi)關(guān)都是一個(gè)二進(jìn)制數(shù).
繼電器:
繼電器是什么?
繼電器像開(kāi)關(guān)一樣,可以串聯(lián)或并聯(lián)在電路中執(zhí)行簡(jiǎn)單的邏輯任務(wù).這種繼電器的組合叫做邏輯門(mén)(logic gate)繼電器的優(yōu)點(diǎn):
繼電器可以被其他繼電器所控制,而不必由人工控制.
連接繼電器是建立邏輯門(mén)的關(guān)鍵.
四種基本邏輯門(mén)
1.與門(mén) AND:
兩個(gè)繼電器的串聯(lián)被稱為一個(gè)"與門(mén)".
-
電路:
符號(hào):
三輸入端與門(mén):
3個(gè)繼電器的串聯(lián)---三輸入端與門(mén)
- 電路:
- 符號(hào):
2.或門(mén) OR :
2個(gè)繼電器的并聯(lián)---或門(mén)
任何一個(gè)繼電器有電壓都可以點(diǎn)亮燈泡.
-
電路:
-
符號(hào):
3. 或非門(mén) NOR:
結(jié)果與或門(mén)相反
-
符號(hào):
輸出表:
全0為1,其余為0
4. 與非門(mén) NAND:
和與門(mén)相反
- 符號(hào):
- 輸出表:
反向器(inverter):
開(kāi)關(guān)閉合,燈泡就熄滅.
- 電路:
- 符號(hào):
- 作用:
能將0(低電平)轉(zhuǎn)換成為 1 (高電平)
2-4譯碼器:
由4個(gè)與門(mén)和2個(gè)反向器連接成的電路叫做2-4譯碼器
輸入:
2個(gè)二進(jìn)制位,各種組合共表示4個(gè)不同的值輸出:
4個(gè)信號(hào),任何時(shí)刻只能有一個(gè)是1 ,至于哪個(gè)是1取決于兩個(gè)輸入.電路:
緩沖器(buffer) :
將4個(gè)邏輯門(mén)和1個(gè)反向器組合在一起,就是原始的繼電器.
也稱為緩沖器.
- 符號(hào):
- 輸入輸出:
- 作用:
- 輸入信號(hào)很微弱的時(shí)候,可以加強(qiáng)信號(hào)
- 延遲信號(hào)(繼電器需要幾分之一秒才會(huì)被觸發(fā) )
摩根定律:
1. 摩根定律是什么?
關(guān)于命題邏輯規(guī)律的一對(duì)法則
2. 摩根定律的表達(dá)式?
3. 兩組等價(jià)關(guān)系:
這兩組等價(jià)關(guān)系就是摩根定律在電路中的實(shí)現(xiàn)
4. 摩根定律與布爾代數(shù)的關(guān)系:
摩根定律是**簡(jiǎn)化布爾表達(dá)式的一種重要手段,因此也可以用來(lái)簡(jiǎn)化電路
12. 二進(jìn)制加法器
加法是算術(shù)運(yùn)算中最基本的運(yùn)算,如果想搭建一臺(tái)計(jì)算機(jī),首先就要造出可以計(jì)算兩個(gè)數(shù)的和的器件.
12.1 二進(jìn)制的加法法則:
帶有前導(dǎo)零的形式.每個(gè)結(jié)果都是2位的值.
加法位(sum bit):
進(jìn)位位(carry bit):
1+1=0,進(jìn)位為1
12.2. 8位加法器真實(shí)模型:
范圍:0000-0000到1111-1111 即十進(jìn)制的0到255
12.3 加法器中的電路設(shè)計(jì):
12.3.1 半加器(half adder):
- 為什么叫半加器:
半加器可以將2個(gè)二進(jìn)制數(shù)相加,得出一個(gè)加法位和一個(gè)進(jìn)位位.但是絕大多數(shù)二進(jìn)制數(shù)是多與1位的.
半加器沒(méi)有做的是: 將之前一次的加法可能產(chǎn)生的進(jìn)位位納入下一次運(yùn)算.
-
對(duì)照:
-
電路:
-
符號(hào):
12.3.2 全加器(Full Adder):
- 電路:
- 符號(hào):
12.3.3 8位加法器:
- 模型:
每個(gè)Full Adder的進(jìn)位輸出都作為下一個(gè)全加器的進(jìn)位輸入.
12.3.4 16位加法器:
模型:
12.3.5 優(yōu)化:
- 更快的加法器運(yùn)用了被稱為"前置進(jìn)位"的電路來(lái)提高運(yùn)算速度.
- 晶體管取代繼電器.