出版時(shí)間:2012-10 出版社:電子工業(yè)出版社 作者:查爾斯·佩措爾德 頁數(shù):420 字?jǐn)?shù):442000
Tag標(biāo)簽:無
內(nèi)容概要
這是一本講述計(jì)算機(jī)工作原理的書。不過,你千萬不要因?yàn)椤肮ぷ髟怼敝惖淖盅劬臀鋽嗟卣J(rèn)為,它是晦澀而難懂的。作者用豐富的想象和清晰的筆墨將看似繁雜的理論闡述得通俗易懂,你絲毫不會(huì)感到枯燥和生硬。更重要的是,你會(huì)因此而獲得對(duì)計(jì)算機(jī)工作原理較深刻的理解。這種理解不是抽象層面上的,而是具有一定深度的,這種深度甚至不遜于“電氣工程師”和“程序員”的理解。
作者簡(jiǎn)介
Charles Petzold
是Windows編程界的一位大師,當(dāng)今世界頂級(jí)技術(shù)作家。1994年5月,Petzold作為僅有的七個(gè)人之一(并且是唯一的作家)被《視窗雜志》和Microsoft公司聯(lián)合授予Windows
Pioneer獎(jiǎng),以表彰他對(duì)Microsoft Windows所做出的貢獻(xiàn)。
Petzold從1984年開始編寫個(gè)人計(jì)算機(jī)程序,從1985年開始編寫Microsoft
Windows程序。1986年他在Microsoft Systems
Journal的12月號(hào)上發(fā)表了第一篇關(guān)于Windows程序設(shè)計(jì)的論文。
從1986年到1995年,Petzold為PC
Magazine撰寫專欄文章,向讀者介紹Windows和OS/2程序設(shè)計(jì)等方面的知識(shí)。直到今天他依然保持著Windows
GDI程序設(shè)計(jì)首席技術(shù)作家的地位。其大作Programming
Windows(Windows程序設(shè)計(jì))是盡人皆知的Windows編程經(jīng)典,曾深深地影響過一代程序員,該書目前已出至第5版。
書籍目錄
第1章 至親密友
編碼是什么?在本書中,這個(gè)詞的意思是指一種用來在機(jī)器和人之間傳遞信息的方式。換句話說,編碼就是交流。對(duì)任何能聽見我們的聲音并理解我們所說的語言的人來說,我們發(fā)出的聲音所形成的詞語就是一種編碼。用手電筒能代替聲音來與朋友交談嗎?當(dāng)然值得一試。
第2章 編碼與組合
莫爾斯碼也被稱做二進(jìn)制碼,因?yàn)檫@種編碼的組成元素只有兩個(gè)——“點(diǎn)”和“劃”。不過,點(diǎn)、劃的組合卻可以表示你想要的任意數(shù)目的碼字。這其中的規(guī)律是什么?本章我們就來探討一番。
第3章 布萊葉盲文與二進(jìn)制碼
布萊葉盲文是為了便于盲人閱讀而發(fā)明的一種編碼。在這一章中我們將解析布萊葉盲文,來看看它是如何工作的。我們并不是要真的學(xué)習(xí)布萊葉盲文,而且也無須刻意記住關(guān)于它的什么內(nèi)容。我們僅僅希望從中歸納出編碼的一些性質(zhì)。
第4章 手電筒的剖析
為了理解電在計(jì)算機(jī)中的工作原理,我們先得仔細(xì)鉆研一番電學(xué),不過不要擔(dān)心,只需要一部分基礎(chǔ)知識(shí)就夠了。在本章,我們將以手電筒為教學(xué)道具,引導(dǎo)你走入神秘的電學(xué)世界。
第5章 繞過拐角的通信
在
第1章,我們?cè)?jīng)講過用手電筒與朋友進(jìn)行交談的方法,但是這樣的方式是有局限性的,你的交流對(duì)象必須住在街對(duì)過,而且你們臥室的窗口正好相對(duì)。但是,現(xiàn)實(shí)不會(huì)總是如此。當(dāng)手電筒的光無法到達(dá)朋友的臥室時(shí),怎樣與他們進(jìn)行無聲的交流呢?電路或許可以助你一臂之力。
第6章 電報(bào)機(jī)與繼電器
全球性即時(shí)通信對(duì)于我們來說已經(jīng)司空見慣,你要是生活在19世紀(jì)早期,可沒這么方便。你當(dāng)然可以進(jìn)行即時(shí)通信或者遠(yuǎn)距離通信,但是不能同時(shí)做到這兩點(diǎn)。即時(shí)通信受聲音傳播距離的限制,或者受視野的限制。使用信件倒是可以進(jìn)行更遠(yuǎn)距離的通信,但是寄信耗費(fèi)的時(shí)間太多,并且需要借助于交通工具。為了解決這個(gè)問題,電報(bào)應(yīng)運(yùn),而生而伴隨著電報(bào)誕生的繼電器更是具有重要意義的偉大發(fā)明。
第7章 我們的十個(gè)數(shù)字
人們很容易理解,語言只不過是一種編碼。比如英文中的“cat”(貓)在其他語言中可以寫做gato、chat、Katze、KOIIIK或kátta。然而,數(shù)字似乎并不是那么容易隨文化的不同而改變。不論我們說什么語言,或使用什么樣的發(fā)音,在這個(gè)星球上的所有人都用以下方式來書寫數(shù)字:0,1,2,3,4,5,6,7,8,9。你了解這十個(gè)數(shù)字么?
第8章 十的替代品
對(duì)于人類而言,10是一個(gè)非常重要的數(shù)字。它是我們大多數(shù)人擁有的手指或腳趾的數(shù)目。我們?nèi)祟愐呀?jīng)適應(yīng)了以10為基數(shù)的數(shù)字系統(tǒng)。但是只能使用十進(jìn)制來計(jì)數(shù)嗎?如果人類像卡通人物那樣每只手只有4根手指會(huì)怎樣?
第9章 二進(jìn)制數(shù)
二進(jìn)制是最簡(jiǎn)單的數(shù)字系統(tǒng),其中只包含兩個(gè)數(shù)字:0和1。二進(jìn)制中的1位(bit)稱為1比特,我們可以用它來表達(dá)簡(jiǎn)單的信息:是或不是;亮或滅;打開或關(guān)閉,等等。而事實(shí)上只要信息能轉(zhuǎn)換成兩種或多種可能性的選擇,就都可以用比特來表示。這種例子在日常
生活中隨處可見,比如照相機(jī)膠卷的膠片速度,各種商品包裝上的條形碼。
第10章 邏輯與開關(guān)
對(duì)于古希臘人而言,邏輯是在追求真理的過程中所使用的一種分析方法,是一種哲學(xué)形式。而英國(guó)的數(shù)學(xué)家喬治布爾卻認(rèn)為可以找到一種數(shù)學(xué)形式來描述邏輯,因此他發(fā)明了布爾代數(shù)。更重要的是,布爾代數(shù)運(yùn)算可以用開關(guān)、導(dǎo)線和燈泡組成的電路來實(shí)現(xiàn),布爾代數(shù)中的AND和OR,與線路中開關(guān)的串聯(lián)和并聯(lián),有著奇妙的對(duì)應(yīng)關(guān)系。
第11章 門
繼電器像開關(guān)一樣,可以串聯(lián)或并聯(lián)在電路中執(zhí)行簡(jiǎn)單的邏輯任務(wù)。這種繼電器的組合叫做邏輯門(logic
gate),也簡(jiǎn)稱門。這里提到的邏輯門執(zhí)行“簡(jiǎn)單”邏輯任務(wù)是指邏輯門只完成最基本的功能。本章就介紹那些用以完成最基本邏輯任務(wù)的門。
第12章 二進(jìn)制加法器
加法是算術(shù)計(jì)算中最基礎(chǔ)的運(yùn)算,如果想搭建一臺(tái)計(jì)算機(jī)的話,首先就要搭建出計(jì)算兩個(gè)數(shù)加和的器件。本章我們將利用前面的章節(jié)中用過的開關(guān)、燈泡、導(dǎo)線、電池、邏輯門等這些簡(jiǎn)單的元件,搭建一個(gè)二進(jìn)制加法器。
第13章 如何實(shí)現(xiàn)減法
當(dāng)你確信繼電器連接在一起真的可以實(shí)現(xiàn)二進(jìn)制數(shù)加法的時(shí)候,你可能會(huì)問:“如何實(shí)現(xiàn)減法呢?”問得好!這表明你是相當(dāng)有覺察力的,加法和減法在某些方面互相補(bǔ)充,但是在機(jī)制上二者卻存在本質(zhì)區(qū)別。不過,沒關(guān)系,我們可以想一些辦法,把減法運(yùn)算變成加法。
第14章 反饋與觸發(fā)器
想象一下,如果你沒有了記憶力,該如何去數(shù)數(shù)?我們不記得剛剛數(shù)過的數(shù),當(dāng)然也就無法確定下一個(gè)數(shù)是什么!同理,一個(gè)能計(jì)數(shù)的電路必定需要觸發(fā)器。本章要介紹的就是各種觸發(fā)器。
第15章 字節(jié)與十六進(jìn)制
在前面的章節(jié)中,加法器、鎖存器以及數(shù)據(jù)選擇器的輸入和輸出形式都是8位的數(shù)據(jù)流,也即數(shù)據(jù)路徑的位寬為8,為什么要定義為8位呢?為什么不是6位、7位、9位或10位?本章就要解釋其中的緣由。
第16章 存儲(chǔ)器組織
每天清晨,我們將自己從沉睡中喚醒,這時(shí)大腦的空白會(huì)很快被記憶填滿。我們立刻會(huì)意識(shí)到自己身在何方,最近做了些什么事情,有什么計(jì)劃打算。有的事情我們很快就能想起來,但有時(shí)并非如此。我們可以借助許多工具來記錄信息,比如筆和紙、磁帶,當(dāng)然現(xiàn)在還可以使用存儲(chǔ)器。
第17章 自動(dòng)操作
人類的本性中帶有一些懶惰的特質(zhì)。我們總是抵觸繁重的工作,對(duì)枯燥的、重復(fù)性的工作深惡痛絕。所以,當(dāng)你必須用前面搭建的加法器計(jì)算100個(gè)數(shù),甚至更多個(gè)數(shù)的加法時(shí),有一種念頭就會(huì)不可遏制地從腦子里冒出來:怎樣讓加法器自動(dòng)地完成數(shù)據(jù)輸入和計(jì)算呢?辦法肯定是有的,那就是編寫程序。
第18章 從算盤到芯片
算盤、滑尺、納皮爾骨架、差分機(jī)、解析機(jī)、繼電器、電子管、晶體管、芯片、計(jì)算機(jī);甘特、帕斯卡、萊布尼茲、杰奎德、巴貝芝、圖靈、馮諾依曼、香農(nóng);IBM、貝爾實(shí)驗(yàn)室……你覺得應(yīng)接不暇了嗎?把這些你或者熟悉或者生疏的名詞和名字串起來,就是人類的計(jì)算工具發(fā)展史。讓時(shí)光倒流,去看看那些精巧的工具,感受天才們的巧思吧!
第19章 兩種典型的微處理器
將中央處理器的所有構(gòu)成組件封裝到一塊硅芯片上,就得到了微處理器。
第一片微處理器芯片誕生于1971年,即Intel
4004系列,其中集成了2300個(gè)晶體管,你或許覺得可笑——如今家用計(jì)算機(jī)的微處理器上所安置的晶體管數(shù)量已經(jīng)以億為計(jì)量單位了。但是,從本質(zhì)上來說,微處理器實(shí)際所做的工作并沒有變。在本章,我們就來看看兩種有著輝煌歷史的典型微處理器:Intel
8080和Motorola 6800。
第20章 ASCII碼和字符轉(zhuǎn)換
計(jì)算機(jī)中的存儲(chǔ)器唯一可以存儲(chǔ)的形式是比特,因此如果想在計(jì)算機(jī)上處理信息,就必須把它們轉(zhuǎn)換為比特的形式來存儲(chǔ)。我們已經(jīng)掌握了如何用比特來表示數(shù)字和機(jī)器碼。如何用它來存儲(chǔ)文本呢?畢竟,人類所積累的大部分信息,都以各種文本形式保存的。下面就輪到ASCII碼出場(chǎng)了!
第21章 總線
一臺(tái)計(jì)算機(jī)包括很多部件:中央處理器、存儲(chǔ)器、輸入/輸出設(shè)備等。通常這些部件按照功能被分別安裝在兩個(gè)或更多的電路板上。這些電路板之間通過總線(bus)通信。如果對(duì)總線做一個(gè)簡(jiǎn)單的概括,可以認(rèn)為總線就是數(shù)字信號(hào)的集合,而這些信號(hào)被提供給計(jì)算機(jī)上的每塊電路板。
第22章 操作系統(tǒng)
你或許夢(mèng)想過自己組裝一臺(tái)近乎完整的計(jì)算機(jī),像老木偶匠蓋比特雕刻木偶匹諾曹一樣,全部親自動(dòng)手用小零件完成。不過在你的機(jī)器能完成你想要的操作之前,還差一個(gè)重要的東西——操作系統(tǒng)!
第23章 定點(diǎn)數(shù)和浮點(diǎn)數(shù)
整數(shù)、分?jǐn)?shù)以及百分?jǐn)?shù)等各種類型的數(shù)字與我們形影不離,它幾乎出現(xiàn)在我們生活的所有角落。例如你加班2.75小時(shí),而公司按正常工作時(shí)間的1.5倍支付你工資,你用這些錢買了半盒雞蛋并交了8.25%的銷售稅。在計(jì)算機(jī)的內(nèi)存里,所有的數(shù)都表示為二進(jìn)制形式。通過前面的學(xué)習(xí),我們知道2用二進(jìn)制可以表示為102,可是2.75用二進(jìn)制怎樣表示呢?這就是本章的主題。
第24章 高級(jí)語言與低級(jí)語言
第22章介紹了如何編寫一段簡(jiǎn)單的程序,讓我們可以利用鍵盤將十六進(jìn)制機(jī)器碼輸入計(jì)算機(jī),以及通過視頻顯示設(shè)備來檢查這些代碼。但是使用機(jī)器碼編寫程序就如同用牙簽吃東西,伸出手臂費(fèi)半天勁刺向食物,但每次都只獲取到小小的一塊,用這種低級(jí)語言編寫程序既費(fèi)力又費(fèi)時(shí),有悖于我們發(fā)明計(jì)算機(jī)的初衷。不過,人們想出了一種效率更高的編程方法——使用高級(jí)語言。
第25章 圖形化革命
回顧歷史,從
第一臺(tái)繼電器計(jì)算器出現(xiàn)到現(xiàn)在為止,六七十年過去了,計(jì)算機(jī)的處理速度飛速增長(zhǎng)。不過要充分利用計(jì)算機(jī)日益增長(zhǎng)的運(yùn)算和處理能力,就必須不斷改進(jìn)計(jì)算機(jī)系統(tǒng)中的用戶接口(User
Interface),因?yàn)樗侨藱C(jī)交互的軸心。圖形化革命來了!
章節(jié)摘錄
版權(quán)頁: 插圖: 只顯示文本的視頻顯示適配器還必須支持光標(biāo)(Cursor)功能。光標(biāo)是一個(gè)小小的下畫線,用來表明從鍵盤上輸入的下一字符會(huì)在屏幕的什么位置顯示出來。光標(biāo)所在的行和列常被存儲(chǔ)在兩個(gè)8位的寄存器中,這兩個(gè)寄存器也是視頻板的一部分,而且微處理器可以對(duì)其進(jìn)行寫操作。 有的顯示適配器不僅僅只顯示文本,還可以顯示其他數(shù)據(jù),我們稱這樣的顯示適配器為圖形適配器(圖形顯卡)。通過向圖形顯卡上的RAM寫入數(shù)據(jù),微處理器就可以畫出圖形了,當(dāng)然能顯示各種大小和樣式的文本。相比較而言,圖形顯卡要比只顯示文本的顯卡所需的存儲(chǔ)空間更大。320x200的圖形顯卡有64,000個(gè)像素,如果每個(gè)像素需要l位RAM,那么這樣的圖形顯卡就需要64,000位的RAM,即8000字節(jié)。然而,這只是最低的要求。1位是和1個(gè)像素相對(duì)應(yīng)的,只能用來表示兩種顏色——例如黑白兩色。0可能對(duì)應(yīng)于黑色像素,1可能對(duì)應(yīng)于白色像素。 讓我們仔細(xì)觀察一下黑白電視機(jī),很快會(huì)發(fā)現(xiàn),它們不僅僅只顯示黑色和白色,還能顯示不同灰度的色彩。為了讓圖形顯卡擁有這種功能,通常每個(gè)像素對(duì)應(yīng)于RAM中的一整個(gè)字節(jié),其中00h表示的是黑色,F(xiàn)Fh表示的是白色,介于兩者之間的數(shù)值對(duì)應(yīng)不同的灰度。一個(gè)320×200的視頻板若能顯示256種灰度,就需要64,000字節(jié)的RAM。這與一直在討論的某個(gè)8位微處理器的整個(gè)地址空間非常接近。 如果想顯示出豐富多彩的顏色,每個(gè)像素就需要至少3個(gè)字節(jié)。如果現(xiàn)在你手頭有放大鏡的話,不妨用它觀察一下彩色電視機(jī)或計(jì)算機(jī)視頻顯示器,你會(huì)發(fā)現(xiàn),每種顏色都是由紅、綠、藍(lán)三原色的不同組合而形成的。為了獲取所有的顏色,三原色中每種顏色的強(qiáng)度都需要用一個(gè)字節(jié)來表示。這么算來,就需要192,000字節(jié)的RAM(更多有關(guān)彩色圖形的內(nèi)容將在本書最后一章介紹)。 圖形顯卡到底能顯示出多少種不同的顏色呢?這與每個(gè)像素所賦予的比特?cái)?shù)是有關(guān)的。
編輯推薦
不管你是計(jì)算機(jī)高手,還是對(duì)這個(gè)神奇的機(jī)器充滿敬畏之心的菜鳥,都不妨翻閱《編碼:隱匿在計(jì)算機(jī)軟硬件背后的語言》一下,讀一讀大師的經(jīng)典作品,必然會(huì)有收獲。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載