




已閱讀5頁,還剩87頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
菜鳥學編程 五袋老丐著 第一章 計算機的基本工作原理(初)一種有著神奇的“魔力”和“智能”的人造設備,正在迅速地、徹底地、默默無聞或者令人震驚地改變和豐富我們所生活的大千世界。這個看起來很不起眼的,在一些場合被稱為“電腦”的電器設備,是如何具有如此神奇的“魔力”和“智能”的?本章將帶你開始解開這個謎。11節介紹理想廚房系統,1.2節通過一個炒菜實例講解理想廚房各部件是如何密切配合工作的。1.3是一張理想廚房系統與計算機系統的對照表1.4到1.8介紹了二進制、計算機、機器指令和指令集、數和碼。1.09對計算機的重要特點進行了概括性的總結、1.11是計算機與理想廚房的一些重要區別。其中1.2、1.3、1.4、1.9和1.11是本章重點。電子數字計算機從發明到現在,不過大約70年的時間。然而計算機的發明、改進和普及,卻徹底地變革了人類社會。計算機本身也變得越來越復雜、快速、小巧、種類繁多。但大多數計算機都遵循馮.諾伊曼體系結構。這為我們理解大多數計算機的基本工作原理提供了方便。本章是全書的重要基礎。通過本章,為你真正揭開計算機究竟如何工作的神秘面紗。(但是要直到12.4、12.5節,才能徹底揭開計算機硬件如何在操作系統這個系統軟件的調度管理下,并行運行多道程序的內在奧秘。)糾正你對計算機可能存在的一些錯誤認識和看法。并且為第2、12、13章的學習打下牢固的知識基礎。本章不需要任何的預備知識,只要你能把本章認真仔細地學習兩遍,你就能夠真正懂得看似極為神秘莫測、奧妙無窮,到目前為止人類有史以來最偉大、最神奇而又最為復雜的發明計算機(又稱為“電腦”。這個偉大發明,匯集了幾代人中很多杰出人士的聰明才智和研究成果)是如何工作的基本原理。為達此目的,筆者付出了極大的努力,找到了一種比較好的比喻方法理想廚房系統,由此開始我們的真正理解計算機工作原理的,激動人心的探索旅程。1.1理想廚房系統:理想廚房系統,是一個通過順序執行菜譜中的各個加工步驟,把原材料加工成菜肴的系統。它由硬件(理想廚房、自動冰箱和三條傳送帶)和軟件(菜譜)組成。1) 硬件部分:理想廚房系統,主要由以下三個硬件部件(即實物部件)構成理想廚房、自動冰箱和三條傳送帶。自動冰箱:由非常多的大小一樣的格子組成,每個格子都有一個唯一的編號,這個編號是從0開始逐1遞增的。自動冰箱負責臨時保存菜譜、原材料和菜肴。是不是很奇怪?菜譜竟然要和原材料一道,統一存放在冰箱中!三條傳送帶:負責理想廚房與自動冰箱之間的通信及物品(菜譜中的加工步驟、原料和菜肴)傳送。理想廚房:負責根據從菜譜中取到的加工步驟,進行炒菜以及進行相關的控制工作。2) 軟件部分:菜譜是理想廚房系統中一個無重量、無體積、不會損壞、可經常更換的,但又極為重要的軟件部件(即信息流部件)。菜譜由一個一個的加工步驟順序組成。注意:術語“理想廚房系統”與“理想廚房”是有區別的,理想廚房只是理想廚房系統中的一個組成部分。理想廚房系統的構成簡圖如圖1.1所示:理想廚房 自動冰箱 碟名 碟中物品 格子編號 格子(存放加工步驟或原料)R0R1 廚具R2 廚師PC 廚房管理員IR 材料傳送帶地址傳送帶控制傳送帶 01234567 圖1.1理想廚房系統的構成簡圖(但圖中沒有放入軟件)理想廚房中各種碟子的作用R0、R1、R2碟是一些通用臨時存放碟,用來臨時存放從冰箱中取來的原材料或經過加工了的半成品或成品。PC碟:存放一個大于或等于0的整數值,這個值表示:下一個要執行的加工步驟,位于自動冰箱的哪一格中。IR碟:用來存放從冰箱中剛取過來的一個(立刻要執行的)加工步驟。 理想廚房執行菜譜中的加工步驟,其流程完全是周期性的。 廚房管理員首先要根據PC碟中的值,通過三套傳送帶的協調工作,到自動冰箱的指定格中去取菜譜中的一個加工步驟。取到理想廚房并把它放到IR碟中后,PC碟中的值將會加上1(這是為取下一個加工步驟做好準備)。然后,廚房管理員閱讀并分析IR碟中剛取到的加工步驟。根據此加工步驟的指示,去做以下七類工作中的一種: 1通過三套傳送帶,命令自動冰箱把指定地址格子中的(炒菜加工步驟馬上要用到的)原材料(通過材料傳送帶)傳送到理想廚房中來即取物品;2命令廚師按照指令(即加工步驟)的要求,對原材料作一個基本加工操作(做“炒”,“蒸”,“煮”等基本操作步驟中的一個炒菜動作)即加工原材料。 3通過向三套傳送帶向自動冰箱發命令,把某個碟子中的成品(或半成品)送回到冰箱指定的格子中存放即存物品; 4在廚房的各個碟子或炊具之間傳送原料或半成品在廚房內部進行物品傳送 ;5根據某個狀態碟中的具體條件(比如:加工步驟的預定時間到了、溫度夠了),不按正常順序取出并且執行下一條指令,而是根據此指令中給出的(冰箱格子的相對或絕對)地址,跳轉到那一格中去取下一條指令即進行(有條件的)跳轉。6命令配菜員為某菜配原材料;即輸入(在本章不討論,見第12章)。7命令傳菜生端菜給顧客;即輸出(在本章不討論)。 一個加工步驟執行完后,理想廚房立即自動進行下一個完全類似的、新的 取加工步驟執行加工步驟的周期。 注意:為了解說簡潔起見,在以下敘述中,我們經常把一個加工步驟稱為一條指令,因為一個加工步驟就是一條指導理想廚房如何工作的命令。理想廚房一次只能執行一條指令。一條指令的執行周期,可分為取指子周期和執行子周期這兩個階段。下面我們通過一個實例來講述理想廚房系統的工作機制。這是本章的一個重點,因為計算機的工作原理,與之極其相似。1.2理想廚房系統的一個炒菜實例(此節最好看光盤中的視頻)121現在,我們通過炒制一道香菇炒菜心的例子來說明理想廚房系統的工作過程。 首先,把香菇放在冰箱地址為5的格子中,把菜心放在冰箱地址為6的格子中,冰箱地址為7號的格子,預留給炒好的菜使用。首先,把香菇放在冰箱地址為5的格子中,把菜心放在冰箱地址為6的格子中,冰箱地址為7號的格子,預留給炒好的菜使用。 菜譜的所有加工步驟(又稱為指令)從冰箱地址0號格開始依次按照順序存放,編寫香菇炒菜心的菜譜如下:地址0的格子中: 取地址5(中的物品)到R0碟;地址1的格子中: 取地址6(中的物品)到R1碟;地址2的格子中: 將R0碟和R1碟倒入炒鍋中炒好倒回R0碟;地址3的格子中: 送R0碟(中的物品)到地址7中; 可見,一共有4個加工步驟。開始時理想廚房系統狀態如下圖1.3(注意:冰箱格子以及理想廚房碟子中存放的物品都用了斜體字)理想廚房 自動冰箱 碟名 碟中物品 地址 冰箱格子中物品R0R1 廚具R2 廚師PC 0 廚房管理員IR 材料傳送帶地址傳送帶0控制傳送帶 取01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 圖1.3菜譜設置完畢后,理想廚房系統開始自動化的工作。1),廚房管理員根據PC碟子中的數字“0”,知道要到冰箱地址為0的格子中取第一條指令(即加工步驟)。于是,廚房管理員向控制傳送帶上送出一個“取”信號,然后馬上將PC碟中的數字“0”復制后放到地址傳送帶上。這兩個信號都會到達自動冰箱。自動冰箱收到這兩個信號后,將0號格的內容復印件“取地址5到R0碟”放到材料傳送帶上,送往理想廚房。理想廚房收到后,將這條指令放到IR碟中。然后,廚房管理員將PC碟中的原來值增加1,以便為取下一條指令做好準備。取指令周期完成后,理想廚房系統處于如下圖1.4狀態: 理想廚房 自動冰箱 碟名 碟中物品 地址 冰箱格子中物品R0R1 廚具R2 廚師PC 1 廚房管理員IR 取地址5到R0碟 材料傳送帶地址傳送帶控制傳送帶01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 圖1.4 廚房管理員讀到指令存放碟(即IR碟)中的加工步驟后,知道要到冰箱地址號為5的格子中去取原材料,并且取來后要放到R0碟中。因此,管理員向控制傳送帶上送出一個“取”信號,然后馬上將5這個數放到地址傳送帶上。 冰箱收到“取”信號后,知道理想廚房要取物品。然后,冰箱從地址傳送帶得到了5,于是冰箱將地址為5的格子中的物品“香菇”取出來,放到材料傳送帶上。 材料傳送帶上的物品“香菇”,傳到理想廚房后,按照指令的要求(通過廚房內部的傳送帶)送到了R0碟中。第一條指令執行完后,理想廚房系統處于如下圖1.5所示的狀態:理想廚房 自動冰箱 碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 廚具R2 廚師PC 1 廚房管理員IR 取地址5到R0碟 材料傳送帶 地址傳送帶 5控制傳送帶 取01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心圖1.52)接下來,開始執行下一條指令的取指周期,類似于前一條指令,在取指周期完成后,理想廚房系統處于如下圖1.6狀態:理想廚房 自動冰箱 碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 廚具R2 廚師PC 2 廚房管理員IR 取地址6到R1碟; 材料傳送帶地址傳送帶 1控制傳送帶 取01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心圖1.6管理員分析指令存放碟中的加工步驟(指令)后,知道要到冰箱地址為6的格子中去取原材料,并且放到R1碟中。因此,管理員向控制傳送帶上發一個“取”信號,然后馬上將6這個數放到地址傳送帶上。 冰箱收到“取”信號后,知道理想廚房要取東西,然后,冰箱從地址傳送帶得到了6,于是冰箱將地址為6的格子中的物品“菜心”取出,放到材料傳送帶上。 材料傳送帶上的物品“菜心”,傳到理想廚房后,按照指令的要求通過廚房內部的傳送帶被自動送到R1碟中。第二條指令執行完后理想廚房系統處于如下圖1.7狀態: 理想廚房 自動冰箱碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 菜心 廚具R2 廚師PC 2 廚房管理員IR 取地址6到R1碟; 材料傳送帶地址傳送帶 6控制傳送帶 取01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心圖1.73)在第3條指令的取指周期完成后,理想廚房系統處于如下圖1.8狀態:理想廚房 自動冰箱碟名 碟中物品 地址 冰箱格子中物品R0 香菇R1 菜心 廚具R2 廚師PC 3 廚房管理員IR將R0和R1炒好倒入R2碟;材料傳送帶地址傳送帶 2控制傳送帶01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 圖 1.8 廚房管理員看到IR碟中的內容后,命令廚師將R0碟和R1碟中的原材料倒入鍋中炒好后,倒入R2碟中。完成后如圖1.9理想廚房 自動冰箱碟名 碟中物品 地址 冰箱格子中物品R0香菇R1菜心 廚具R2香菇菜心 廚師PC 3 廚房管理員IR將R0和R1炒好倒入R2碟;材料傳送帶地址傳送帶控制傳送帶01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 圖1.94)第4條指令在取指令周期完成后,理想廚房系統,處于如下圖1.10狀態:理想廚房 自動冰箱碟名 碟中物品 地址 冰箱格子中物品R0香菇R1菜心 廚具R2香菇菜心 廚師PC 4 廚房管理員IR送R2碟到地址7中;材料傳送帶地址傳送帶控制傳送帶01234567取地址5到R0碟取地址6到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心 圖1.10下面開始執行“送R2碟到地址7中”這條指令。廚房管理員分析指令存放碟中的加工步驟后,知道要將R2碟中的物品,送到冰箱地址為7的格子中去存放。于是,管理員向控制傳送帶上發一個“存”信號,然后馬上將7這個數放到地址傳送帶上,最后將R2碟中的物品“香菇菜心”放到材料傳送帶上,送往冰箱。 冰箱收到“存”信號后,知道理想廚房要存放物品,然后,冰箱從地址傳送帶得到了7,于是自動冰箱(的機械手)在材料傳送帶旁,等待從理想廚房R2碟傳來物品“香菇菜心”,一旦到達,自動冰箱就將其取下,并將其存放到地址號為7的格子中。完成后系統狀態如圖1.11:理想廚房 自動冰箱碟名 碟中物品 地址 冰箱格子中物品R0香菇R1菜心 廚具R2香菇菜心 廚師PC 4 廚房管理員IR送R2碟到地址7中;材料傳送帶地址傳送帶控制傳送帶01234567取地址5中到R0碟取地址6中到R1碟;將R0和R1炒好倒入R2碟;送R2碟到地址7中;香菇菜心香菇菜心 圖1.11至此,香菇菜心這道菜終于大功告成了。122 現在,我們通過一些問答,對已經學到的重點知識作一個概括和討論:問題1.理想廚房將要執行的炒某道菜的所有指令是以何種形式,存放在何處的?答:理想廚房將要執行的加工某道菜的全部指令(即加工步驟),必須按照加工的先后順序,由小地址號到大地址號連續地存放在自動冰箱的多個格子中。也就是說:如果正在執行的指令,所在的地址是n的話;下一條要執行的指令,一定是在地址為n1的冰箱的格子中除非剛剛執行的是一條跳轉指令。 問題2.理想廚房如何才能從自動冰箱取到一條指令?取到指令后存放到何處?答:為了取一條指令,廚房管理員首先要把PC碟中的數據(假設是8)復制后放到地址傳送帶上,送往自動冰箱;與此同時,要在控制傳送帶上發送一個“取”信號,送往自動冰箱;然后,廚房管理員還要把PC碟中的數據加上1(PC碟中的數據現在變成了9,以便為取下一條指令作準備)。 自動冰箱根據從控制傳送帶上得到的“取”信號,知道理想廚房要取東西;根據從地址傳送帶上得到的地址信號:8。自動冰箱由此知道理想廚房要取第8格中的物品。于是自動冰箱將第8格的物品取出,放到材料傳送帶上。廚房管理員收到自動冰箱從材料傳送帶上傳來的第8格中指令后,把它放在IR碟中。由以上過程可知,哪怕是要完成取一條指令這樣的一件微不足道的小事,對于理想廚房系統來說也是非常麻煩的。廚房管理員、PC碟、地址傳送帶、控制傳送帶、自動冰箱、材料傳送帶、IR碟,缺一不可,而且相互之間要密切配合、協調工作才能完成此事。廚房管理員在其中起著核心控制作用。 與取指令類似,理想廚房在執行一條指令時,經常也是如此的麻煩和白癡(比如從冰箱取原材料的指令或送菜肴到冰箱的指令)。問題3.如果沒有保存在冰箱中的菜譜,理想廚房的廚師是否能夠炒出一道菜來?答:決對不會!廚師只會在廚房管理員的命令下,每次僅僅做 “炒”、 “煎”、“蒸”、“烤”、“炸”和“煮”等一些固定數量的基本操作中的一個基本操作。在這個廚師的大腦中,沒有任何一道菜的全部加工過程。他也學不會新的基本炒菜動作。他只會一次次地、忠實地、快速地按照廚房管理員的命令,每次只做一個單一步驟的加工操作。而廚房管理員向廚師發出的加工命令,也都是來自于他所取到的菜譜中的指令。沒有保存在冰箱中的菜譜,理想廚房系統中的管理員和廚師根本加工不出任何一道菜肴來。理想廚房系統的炒菜“智能”來自于菜譜的編寫者。正是由于人們編出來的可以讓理想廚房執行的各種各樣的菜譜,才使得原本白癡般的、能力極為有限的理想廚房系統在炒菜方面顯得幾乎無所不能!問題4 編寫特殊菜譜很困難嗎?答:確實很難編寫。要想理想廚房系統做出任何一道菜肴,都要編寫出它能自動執行的特殊菜譜,這種菜譜要非常精確、無二義性。在這種菜譜中,要用冰箱地址號來取代原料的名稱(這導致了菜譜很難看懂)。還要知道,廚師究竟會做哪幾種基本炒菜動作、廚房管理員懂得哪幾種加工命令。此外,原料所放的位置不同,菜譜的內容也就有所不同,與給普通人看的菜譜有很大不同。問題5 你能簡要敘述一下,廚房管理員的工作步驟嗎?答:廚房管理員的工作完全是周期性的,即他永遠在做:取指令分析指令發出控制命令要求各部件執行指令這一種周期性的動作。只要一啟動,理想廚房系統永遠在按照這個周期性的動作,一條一條的順序的取指令并執行指令(如果遇到跳轉指令,則跳轉到指定地址去,繼續取下一條指令),不停地快速運行著,直到停機或發生嚴重故障為止。理想廚房系統的工作原理,到此已經全部介紹完畢。學完理想廚房系統的基本工作原理后,從整體上把握計算機的基本工作原理,就變成為一個比較輕松的名詞替換的小游戲了。1.3理想廚房系統與計算機系統術語對照表理想廚房的工作原理,與計算機的工作原理是極為類似的。下面首先給出兩個系統之間的術語對照表,見表1.1。表1.1術語對照表理想廚房系統電子數字計算機(簡稱計算機) 1.硬件設備自動冰箱(包含多個大小相等的格子)內存(又稱為主存,包含很多大小相等的基本存儲單元) (冰箱中的)一個格子(內存中的)一個基本存儲單元材料傳送帶數據總線地址傳送帶地址總線控制信號傳送帶控制總線理想廚房(包含以下設備)CPU(或稱微處理器,包含以下部件)廚師及炒菜設備算術邏輯單元ALU(又稱為運算器)廚房管理員控制單元(又稱為控制器)通用臨時存放碟通用寄存器指令地址存放碟PC指令地址寄存器(又稱為程序計數器PC)指令存放碟IR指令寄存器(又稱為IR寄存器) 狀態存放碟狀態寄存器專用加工容器專用寄存器采購員及配菜員輸入設備(鍵盤、鼠標、網卡、U盤等)傳菜生輸出設備(顯示器、打印機、網卡、U盤等)自動倉庫外存(硬盤、U盤,但同時也屬于輸入輸出設備) 2.軟硬件之間的接口(編寫菜譜或程序的基本要素)冰箱格子的地址(即編號)內存中基本存儲單元的地址(即編號)廚師可做的各種炒菜的基本動作(蒸、炒、炸、煮等)運算器可進行的各種基本運算(算術運算、邏輯運算等)碟子的名稱寄存器的編碼或代號 理想廚房可以執行的所有各種加工動作(指令)該類型計算機的指令集3.軟件特殊菜譜(機器語言形式的) 程序加工步驟(機器)指令原材料數據 炒好的菜信息(或稱為結果)精確的普通菜譜高級語言程序(又稱為源程序或源代碼) 簡要的普通菜譜偽代碼4. 系統的使用者編寫特殊菜譜者用機器語言編程的程序員 編寫精確的普通菜譜者用高級程序設計語言編程的程序員理想廚房系統的大堂經理和顧客計算機的用戶在計算機上運行一個程序時,上表中列出的計算機的各個部件會協同工作,完成任務(參見1.6節)。如果沒有對理想廚房工作原理的詳細講解,由于出現了太多新的專業術語和名詞,人們決對很難在短時間內,全面把握和理解這個計算機系統的工作原理的(對于任何一個初學者,這都是一件極其困難的事)。1.4預備知識:二進制及相關知識簡介: 人類有十個手指,所以偏愛十進制記數法。可是,在人造數據處理設備中,使用十進制記數法通常卻是愚蠢的選擇。雖然理論上可以使用任何進制(比如十進制)為基礎來制造計算機,但現代計算機都是采用二進制的數字電子信號(制造電子計算機為何采用數字信號而不用模擬信號,不用其他進制而采用二進制,請參見本書附錄D )進行工作的機器。也就是說,在現代計算機的內部,只能以二進制的形式來存儲、傳輸需要執行的指令和需要加工的數據。 為了從底層徹底把握計算機的基本工作原理,讀者必須事先對二進制的相關知識要有所了解。以下進行簡要介紹,更深入一些的討論請參見大學計算機基礎或微機原理等書籍。1.4.1 二進制數的概念及其數制之間的轉換 首先,來看一張部分十進制數與二進制數的數值對照表: 十進制數 所對應的二進制數 (所對應的十六進制數)0 0 01 1 12 10 23 11 34 100 45 101 56 110 67 111 78 1000 89 1001 910 1010 A11 1011 B12 1100 C13 1101 D14 1110 E15 1111 F16 10000 10表 1.2 部分十進制數與二進制數(和十六進制數)的數值對照表一般情況下,用n位二進制可表示的最大正整數值是2n-1。比如:4位二進制可表示的最大正整數是24-1=15(即1111)2 。可見,二進制只能用兩個數字“0”和“1”來進行計數。二進制加法運算的重要規則是: 1+1=10 ,即兩個1相加產生向高位的進位。左邊是高位數,右邊是低位數(此外,其它加法規則還有:1+0=1、0+1=0、0+0=0)。我們經常用一對圓括號括住一個數值,并在圓括號外面加一個數字下標,來表示一個數是幾進制數。比如(1011)10是一個十進制數;而(1011)2是一個二進制數。142將二進制整數轉化成十進制整數一個十進制的整數,其數值可用以下展開式來表示:比如3785(3785)10=3103+7102+8101+5100 (1)我們把(1)式中10的幾次方稱為權重,權重左邊的乘數稱為系數。(1)式中共有4個系數,從左到右依次是:“3”“7”“8”“5”。可見,在表示數值數據時,越左邊的系數權重越大。權重中的基數(即底數)與該進制是一樣大的,在這里都是10。類似的,一個二進制數,其數值也可用以下展開式來表示:比如二進制數1011(1011)2= 123+022+121 +120 (2)此二進制數的值,等于十進制的18+04+12+11=8+2+1=(11)10 (3) 由此可以得到:二進制整數轉化成十進制整數的一般方法:只要將該二進制整數(即1011)展開后的(2)式中的每一位(小于2)的系數值,乘以這一位的轉化成十進制數后的權重(即2的幾次方),然后再將逐個乘積項的數值(用十進制加法規則)相加起來即可。深入一步:以上這種二進制整數轉化成十進制整數的方法,其實適合將一個任意R進制數轉變成十進制數。比如有8進制數(305)8,就可展開為: (305)8=382+081+580 = 364+08+51=(197)10143 將十進制整數轉化成二進制數:1. 將十進制數轉換成二進制數的短除法: 把一個整數(比如89)從十進制轉換成二進制,需要用新基數2除這個數(89),余數(1)是結果左邊的下一位數字,商(44)是新的被除數,整個過程直到商為0時終止。短除法就是按照以上規則,把要轉換的十進制整數不斷的除以2然后取余數,商作為新的被除數,直到商為0的時候結束。然后把余數倒著寫出來。例如: 把84轉換成二進制數 1244 222 211 25 22 21 20 89 0 0 1 1 0 1即: (89)10= (1011001)2深入一步 :任意的R進制實數表示法一般情況下,任何一個R進制實數,都可以緊湊地表示為:(R通常是2,8,10,16中的某個數) (+ rnrn-1r1r0 . r-1r-2.r-m)R (其中的任何一個ri都是0到R-1之間的一個整數)將任意一個R進制數擴大R倍(即乘以R),只需將小數點右移一位即可;類似地,將任意一個R進制數縮小R倍(即除以R),只需將小數點左移一位即可。其中R=10是人們最為熟悉的十進制數,這種數的表示法,主要是由古代印度人發明的。任何一個R進制數,也都可以用多項式的展開表示為:+(rnRn+ rn-1Rn-1+ r1R1+ r0R0 + r-1R-1+ r-2R-2+ r-mR-m) (ri稱為系數,Ri稱為權重)R進制數值的多項式展開表示法中,不使用小數點。一個數的各種進制表示法之間的數值是一樣大的,只不過表現形式不同而已。注意:短除法也適用于將一個十進制整數轉換為一個任意R(R2)進制的整數,只需將除數由2替換為R即可(參見例題 )。可選練習:將十進制整數89用短除法轉化為8進制整數。*1.4.4將十進制純小數轉化成二進制純小數10進制純小數轉換為2進制純小數的轉換過程,與整數的進制轉換過程有些類似而又有些相反:不是用新的基數2除這個數,而是用新基數2去乘它。乘法的進位將成為答案右邊的下一位數字,乘法結果中的小數部分將成為新的被乘數,整個過程直到乘法結果中的小數部分為0時終止。例如:把十進制小數0.375轉換成二進制小數: 0.3752 = 0.750 0 /進位0,小數點后第一位 0.752 = 1.50 1 /進位1,小數點后第二位 0.5 2 =1.0 1 /進位1,小數點后第三位 所以,(0.375)10=(0.011)21.5預備知識:數和碼的含義和區別 如果計算機僅僅只能夠對一些數進行數值運算(在計算機剛發明的早期年代確實是如此),那么它的應用范圍就很窄。然而,現代計算機的應用范圍卻是極其廣泛的。根本原因在于:現代計算機不僅能對數進行運算,還能對各種各樣的“碼”進行處理。所以,我們想要真正懂得計算機并且學好編程,就不僅要熟悉二進制的“數”,還必須對二進制的“碼”也有一個比較清晰的整體了解。以下這些內容雖然比較繁瑣,然而理解起來卻并不太困難。151十進制的數和碼:我們通過一個例子,先來來說明十進制數字系統中數與碼的區別如果3785用于表示數,則越高位(即越左邊的位)的數字越重要(因為權重越大,在十進制數3785中,“3”的權重是103,而“5”的權重是100)。 而3785用于表示非數值的碼,則每一位都同樣重要。碼值僅相差一位,所表示的文字(或代表的事物)就可以有巨大的區別(比如:3785可代表漢字“前”,而3786可代表漢字“后”)。 十進制的數字串“3785”,既可以表示一個值為三千七百八十五的十進制數,也可以表示一個碼為3785的漢字(或者表示任何別的什么10000個同類型事物中的碼值為3785的一個特定事物)。 對于數值可以進行各種數學運算,而對于表示非數值的碼進行數學運算,通常毫無意義。 152 二進制的位、位串、字節 與十進制一樣,二進制數與二進制碼也有類似的區別。只不過在二進制中,只能用0和1組成的一個二進制數字串,來構成任何大小的數值或者表示具有任何含義的碼。我們先來熟悉一些與二進制有關的術語。位:單個二進制數字不是0就是1,再沒有別的可能數字我們將其稱為“位”(bit)。位串及其長度:任意多個二進制“位”順序排列在一起(比如:11011011100),我們稱之為位串(有的教科書稱為“位模式”)。位串中數字的個數,我們稱為位串的長度。字節8位二進制位串在計算機、通信及其大量相關應用中,人們最為關心的是長度為8位的二進制位串。這是由于現代的絕大多數計算機和數字化的通信網絡設備,都是以8位二進制位串作為計量(部件的)數據存儲容量和(傳輸過程中的)數據傳輸量的一種基本單位。我們把 一個8位二進制位串稱為一個字節(Byte)。深入一步:二進制數據存儲和傳輸中的一些常用單位“字節” (Byte)這個基本單位雖然是“位”這個最小二進制單位的8倍,但在很多場合仍然顯得太小,更大的常用單位有(用B來表示Byte):千字節: 1KB=1024B 兆字節: 1MB=1024KB吉字節: 1GB=1024MB每種單位之間都是1024倍的關系,而不是1000倍的關系。所以,我們常常會看到一些數據存儲設備標出它的數據存儲容量是多少個KB、MB或GB;或者一根網線(或者一塊網卡)標出它的數據傳輸量是每秒鐘傳輸多少個KB、MB或GB。153 二進制的數和碼如果用一個位來表示整數值,只能表示0和1這兩個值中之一。大于1的整數值用一個“位”表示不了。如果用單個的“位”來表示碼,則只能用來對(同屬一種類型的)兩種不同事物進行編碼。比如:用0表示“假”, 用1表示“真”; 用0表示“否”, 用1表示“是”;或者用 0 表示動物“狗”,用 1 表示動物“貓”;等等。如果用長度為2的一個位串來表示整數值,則能夠表示00(即0)、01(即1)、10、11這4個整數值中的某一個。如果用長度為2的位串來進行編碼,由于有4(即22)個碼值可以用,則能夠用來對屬于同一類型的4個不同的事物(或狀態)進行編碼。比如 酸,甜,苦,辣、牛,馬,羊,豬、加,減,乘,除、A,B,C,D、趙,錢,孫,李等等。深入一步:編碼和解碼的一個實例 通過制定編碼規則,比如:可以用00表示“D”、01表示“C”、 10表示“B”、 11表示“A” ,這就構成了一張表示4個字符的編碼解碼表(注1),見表1.2 。(注1):如果把00,01,10,11看成4個未婚男士(的代號),A,B,C,D看成4個未婚女士(的代號)。所謂的“編碼解碼表”,只不過是所有男士與女士之間的一張快速配對表而已。用嚴格的數學術語來講,這實質上是兩個集合00,01,10,11與 A,B,C,D 的所有元素之間的一張一對一的映射表。 二進制碼字符00 D01 C10 B11 A表1.2 表示4個字符的編碼解碼表有了編碼解碼表,先通過對字符串“CAB”進行編碼,就可以用一些碼值構成的二進制位串“011110”來間接地存儲和傳輸這個字符串。因為這樣既安全,又方便(注2)。到達目的地后,接收方也要有同樣的一張字符的“編碼解碼表”,才能將這種接收到的二進制位串,翻譯成它的本來意義。比如將二進制位串011110翻譯成字符串“CAB”。這個過程就稱為解碼。 編碼 發送 接收 解碼 CAB011110011110CAB 圖: 字符串的編碼、發送、接收、解碼全過程(注2)一個二進制位串,用二進制的電子數字信號是很容易表示、存儲和傳輸的。而任何用文字表達的非數值數據,不通過某種編碼,是無法直接用二進制的電子數字信號來表示、存儲和傳送的。如果用一個字節來表示無符號的整數,則能夠表示28=256個整數值。分別是從0到255,對應于二進制數從(00000000)2到(11111111)2 。 如果用一個字節來進行編碼,則能夠用來對256種同類事物進行編碼。計算機中一種常用的對英文文本(即文件)中常用字符的編碼規則,通常是采用一個字節來對英文字符進行編碼的“ASCII碼表”(細節參見附錄B)。借助于ASCII碼表,我們就可對一個英文文本進行編碼,轉換成一串長長的二進制ASCII碼形式的位串后(但實質上還是一個英文文本),送到計算機中進行編輯、加工、保存和(通過網絡)進行遠程通信。 在不必區分加工處理對象到底是數還是碼的場合,我們可將其統稱為數據。有了這些預備知識,現在我們終于可以整體而又簡明地介紹計算機的工作原理了。16電子數字計算機:電子數字計算機(以后簡稱為計算機)是一個通過執行程序,把數據加工成信息的電子數字設備。類似于理想廚房系統,計算機也是由硬件(中央處理單元、內存和三套總線、外圍設備)和軟件(程序)組成。1.6.1計算機的硬件 計算機硬件主要由以下四個實物部件構成:中央處理單元、內存、三套總線和外圍設備。內存(相當于自動冰箱):內存主要是由極大量的大小相同的基本存儲單元(相當于自動冰箱的格子)組成。每個基本存儲單元都具有一個從0開始順序遞增的唯一編號,稱為內存基本存儲單元的地址(相當于冰箱格子的編號),但在很多書中(包括本書)經常將其簡稱為內存地址。現代計算機,大多數是以字節(而不是以更小的“位”)作為基本存儲單元,來分割內存的。內存負責臨時保存正在執行(和將要執行)的程序的指令序列、程序要加工的數據和處理結果。這些內容在內存中,全部都是以二進制位串形式存放的。如下圖1.14所示: 內存地址 內存基本存儲單元中 存放的位串(即字節)110101101101001110110101011011110101110100000000100000000000000010000001000000001000001000000000100001000000000010000101 圖 1.14 內存片段示意圖:由具有唯一地址的大量內存基本存儲單元構成的內存。在每個基本存儲單元中,可以存放長度為一個字節的指令或數據。一條指令(或者一個數據)如果太長,一個基本存儲單元(注)存放不下,就要用內存地址連續的幾個基本存儲單元來存放。(注)不少教科書把內存的一個基本存儲單元稱作為一個字節。n個基本存儲單元就稱為n個字節。三套總線(相當于三條傳送帶):分別是數據總線、地址總線和控制總線,負責中央處理單元與內存之間的通信及數據(包括程序中的指令、數據和信息)傳送。中央處理單元,簡稱CPU(相當于理想廚房):負責通過三套總線,到內存中去取程序(相當于菜譜)中的指令(相當于加工步驟),并根據指令對數據(相當于原材料)進行運算處理(相當于加工原材料)以及進行相關的控制工作。中央處理單元中的主要部件有:控制器或稱為控制單元(相當于廚房管理員)、運算器(即ALU,相當于廚師加炊具)和一些寄存器(相當于廚房中的碟子)。外圍設備(相當于配菜員或傳菜生)包括輸入設備(鍵盤、鼠標、網卡、數碼相機、麥克風等)、輸出設備(顯示器、打印機、網卡、音箱等)和外存(硬盤、U盤、光盤等)。包含機械部件的外圍設備,其工作速度比計算機中的純電子器件(CPU、內存、三套總線)慢得多。在本章中,我們暫不對外圍設備的工作原理進行討論(在最后一章進行講解)。計算機結構示意圖,如圖1.13所示地址總線數據總線控制總線CPU內存I/O設備I/O設備 圖1.13計算機結構示意圖 要替換1.6.2計算機的軟件 構成計算機的部件中,還有一個無重量的、無體積的、不會損壞、可經常更換的,極為重要的軟件部件,即命令計算機如何進行工作的信息流程序。程序是由一條條指令順序組成的指令序列(相當于菜譜中的一系列加工步驟)。 構成程序的指令序列,必須按執行的先后順序依次存放在內存中。計算機的構成簡圖(此圖沒有包括外圍設備)如圖1.15所示:中央處理單元(CPU) 內存 寄存器名 寄存器中物品 地址 存儲單元中存放程序或數據R0R1 R2 運算器 PC 控制器IR 數據總線地址總線控制總線 000001010011100101110111 指令1指令2指令3數據數據圖1.15計算機系統的構成簡圖圖1.15所示計算機的CPU中各種寄存器的作用:R0、R1、R2是一些通用寄存器,用來臨時存放從內存取來的數據或運算得到的結果。PC寄存器:存放下一條要執行的指令位于內存的哪個存儲單元中。IR寄存器:用來存放剛從內存取過來的馬上要執行的指令。 1.6.3計算機指令執行的全過程指令的格式 任何類型的計算機,指令的通常格式為: 操作碼 操作碼告訴計算機要做什么事,操作數告訴計算機對存放在哪里的數(或什么數)做這件事。操作碼是所有指令必須有的,一般的指令通常有一到三個操作數。但有些指令沒有操作數(這通常是由于這種指令的操作數默認是在某個或某幾個寄存器中)。我們在第12章將再次深入一步討論這個問題。 比如在一臺極簡單的計算機上,可以用操作碼00001表示加法、00010表示減法,等等。注意:指令在計算機內部實際上都是二進制位串。指令執行的全過程與理想廚房執行加工步驟類似,中央處理單元(CPU)執行指令的過程,也完全是周期性的。控制器首先要根據PC寄存器中的值(這個值指示將要執行的指令,位于內存的哪一個存儲單元中),通過三套總線密切配合,到內存中去取這條指令。取到CPU并把它放到指令寄存器 (即IR寄存器) 之后,PC寄存器中的原來值,將會加上L(L是剛取到的這條指令的字節數),以便為取下一條指令做準備。 控制器對取到的該條指令進行譯碼,然
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校園設備投放管理制度
- 校園食堂餐飲管理制度
- 森林里的小精靈童話童話類作文10篇
- 和自然有個約會抒情作文10篇
- 市場調研數據表-互聯網市場調研
- 法學刑事法律實務知識要點
- 知識產權許可使用與服務合同
- 初級中點考試題及答案
- 農業種植面積確定及合同管理協議
- 生活中的小確幸寫物作文5篇
- 理論力學(周衍柏第三版)思考題+習題答案
- 拜占庭歷史與文化知到智慧樹章節測試課后答案2024年秋南開大學
- 2024-2030年中國LNG加氣站行業十三五規劃及項目可行性分析報告
- 腳手架安全事故案例及總結
- 國家開放大學國開電大《學前兒童游戲指導》形考任務1-4答案
- 2024年-2025年農作物植保員職業技能考試題庫(含答案)
- 物理-2025年中考終極押題猜想(廣州專用)(解析版)
- 【MOOC】機械設計-華中科技大學 中國大學慕課MOOC答案
- 【MOOC】材料力學-西北工業大學 中國大學慕課MOOC答案
- 充電樁技術規格書
- 2024年華東師范大學第二附中自主招生數學試卷真題(含答案詳解)
評論
0/150
提交評論