計(jì)算機(jī)組成原理(本科)全套教學(xué)課件_第1頁(yè)
計(jì)算機(jī)組成原理(本科)全套教學(xué)課件_第2頁(yè)
計(jì)算機(jī)組成原理(本科)全套教學(xué)課件_第3頁(yè)
計(jì)算機(jī)組成原理(本科)全套教學(xué)課件_第4頁(yè)
計(jì)算機(jī)組成原理(本科)全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩1072頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

全套可編輯PPT課件計(jì)算機(jī)系統(tǒng)概論數(shù)據(jù)表示數(shù)據(jù)運(yùn)算與運(yùn)算器存儲(chǔ)系統(tǒng)指令系統(tǒng)中央處理器總線(xiàn)系統(tǒng)外圍設(shè)備輸入/輸出系統(tǒng)等。目錄concents1.1計(jì)算機(jī)的發(fā)展歷程1.2計(jì)算機(jī)硬件的基本構(gòu)成1.3計(jì)算機(jī)軟件1.4計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu)1.5計(jì)算機(jī)的性能指標(biāo)1.6常見(jiàn)問(wèn)題和易混淆知識(shí)點(diǎn)計(jì)算機(jī)的發(fā)展歷程1.1(1)第一代計(jì)算機(jī)(1946~1957年)——電子管時(shí)代其特點(diǎn)是:邏輯元件采用電子管;使用機(jī)器語(yǔ)言進(jìn)行編程;主存用延遲線(xiàn)或磁鼓存儲(chǔ)信息,容量極??;體積龐大,成本高;運(yùn)算速度較低,一般只有每秒幾千到幾萬(wàn)次。1.1.1計(jì)算機(jī)硬件的發(fā)展(2)第二代計(jì)算機(jī)(1958~1964年)——晶體管時(shí)代。其特點(diǎn)是:邏輯元件采用晶體管;運(yùn)算速度提高到每秒幾萬(wàn)到幾十萬(wàn)次;主存使用磁芯存儲(chǔ)器;軟件開(kāi)始使用高級(jí)語(yǔ)言(如FORTRAN),有了操作系統(tǒng)的雛形。(3)第三代計(jì)算機(jī)(1965~1971年)——中小規(guī)模集成電路時(shí)代。其特點(diǎn)是:邏輯元件采用中小規(guī)模集成電路;半導(dǎo)體存儲(chǔ)器開(kāi)始取代磁芯存儲(chǔ)器;高級(jí)語(yǔ)言和操作系統(tǒng)迅速發(fā)展,開(kāi)始有了分時(shí)操作系統(tǒng)。(4)第四代計(jì)算機(jī)(1972至今)——超大規(guī)模集成電路時(shí)代。其特點(diǎn)是:邏輯元件采用大規(guī)模集成電路和超大規(guī)模集成電路,并產(chǎn)生了微處理器;半導(dǎo)體存儲(chǔ)器完全取代了磁芯存儲(chǔ)器,并不斷向大容量、高速度發(fā)展,高速緩存、虛擬存儲(chǔ)器等技術(shù)相繼出現(xiàn),進(jìn)一步提高了存儲(chǔ)器的性能;伴隨著流水線(xiàn)、多處理器等并行技術(shù)的采用,計(jì)算機(jī)的運(yùn)算速度已飛速提升。1.1.2計(jì)算機(jī)軟件的發(fā)展計(jì)算機(jī)軟件的發(fā)展計(jì)算機(jī)技術(shù)的發(fā)展計(jì)算機(jī)語(yǔ)言的發(fā)展面向機(jī)器的機(jī)器語(yǔ)言面向匯編語(yǔ)言、面向問(wèn)題的高級(jí)語(yǔ)言其中高級(jí)語(yǔ)言的發(fā)展真正促進(jìn)了軟件的發(fā)展。高級(jí)語(yǔ)言的發(fā)展又經(jīng)歷了幾個(gè)階段:第一階段代表語(yǔ)言是適用于科學(xué)計(jì)算和工程計(jì)算的FORTRAN語(yǔ)言第二階段結(jié)構(gòu)化程序設(shè)計(jì)階段,其代表語(yǔ)言是PASCAL第三階段面向?qū)ο蟪绦蛟O(shè)計(jì)階段,其代表語(yǔ)言是C++近年來(lái)隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,又出現(xiàn)了可適應(yīng)網(wǎng)絡(luò)環(huán)境的面向?qū)ο笳Z(yǔ)言JAVA等。與此同時(shí),直接影響計(jì)算機(jī)系統(tǒng)性能提升的各種系統(tǒng)軟件也有了長(zhǎng)足的發(fā)展,特別是操作系統(tǒng),如Windows,Linux,UNIX等。計(jì)算機(jī)硬件的基本構(gòu)成1.21.2.1早期的馮·諾依曼機(jī)1946年,美籍匈牙利數(shù)學(xué)家約翰·馮·諾依曼(JohnvonNeumann)在研究EDVAC(ElectronicDiscreteVariableAutomaticComputer)時(shí)提出了“存儲(chǔ)程序”的概念,“存儲(chǔ)程序”的思想奠定了現(xiàn)代計(jì)算機(jī)的基本結(jié)構(gòu),以此概念為基礎(chǔ)的各類(lèi)計(jì)算機(jī)通稱(chēng)為馮·諾依曼機(jī)。其特點(diǎn)如下:(1)計(jì)算機(jī)硬件系統(tǒng)由運(yùn)算器、存儲(chǔ)器、控制器、輸入設(shè)備和輸出設(shè)備5大部件組成。(2)指令和數(shù)據(jù)以同等地位存于存儲(chǔ)器內(nèi),并可按地址尋訪(fǎng)。(3)指令和數(shù)據(jù)均用二進(jìn)制代碼表示。(4)指令由操作碼和地址碼組成,操作碼用來(lái)表示操作的性質(zhì),地址碼用來(lái)表示操作數(shù)在存儲(chǔ)器中的位置。(5)指令在存儲(chǔ)器內(nèi)按順序存放。通常是順序執(zhí)行,特定條件下,可根據(jù)運(yùn)算結(jié)果或根據(jù)設(shè)定的條件改變執(zhí)行順序。(6)早期的馮·諾依曼機(jī)以運(yùn)算器為中心,輸入/輸出設(shè)備通過(guò)運(yùn)算器與存儲(chǔ)器傳送數(shù)據(jù)。典型的馮·諾依曼機(jī)結(jié)構(gòu)如圖所示。1.2.2現(xiàn)代計(jì)算機(jī)的組織結(jié)構(gòu)現(xiàn)代計(jì)算機(jī)已經(jīng)發(fā)展為以存儲(chǔ)器為中心,使輸入/輸出操作盡可能繞過(guò)CPU,直接在輸入/輸出設(shè)備和存儲(chǔ)器之間完成,以提高系統(tǒng)的整體運(yùn)行效率,其結(jié)構(gòu)如圖所示。目前絕大多數(shù)現(xiàn)代計(jì)算機(jī)仍遵循馮·諾依曼的“存儲(chǔ)程序”設(shè)計(jì)思想。據(jù)此,計(jì)算機(jī)硬件均由運(yùn)算器、控制器、存儲(chǔ)器、輸入/輸出設(shè)備及將它們連接為有機(jī)整體的總線(xiàn)構(gòu)成。運(yùn)算器的功能是在控制器的指揮下,對(duì)信息或數(shù)據(jù)進(jìn)行處理和運(yùn)算(包括算術(shù)運(yùn)算和邏輯運(yùn)算),因此通常稱(chēng)其為算術(shù)邏輯運(yùn)算單元(ArithmeticandLogicalUnit,ALU)。運(yùn)算器中還應(yīng)有存放操作數(shù)和運(yùn)算結(jié)果的寄存器,包括移位寄存器和若干通用寄存器等。01運(yùn)算器010203暫時(shí)存放參與運(yùn)算的數(shù)據(jù)和某些中間運(yùn)算結(jié)果實(shí)現(xiàn)對(duì)數(shù)據(jù)的算術(shù)和邏輯運(yùn)算挑選參加運(yùn)算的數(shù)據(jù),選中要執(zhí)行的運(yùn)算功能,并把運(yùn)算結(jié)果輸出到所要求的部件中運(yùn)算器的功能可以歸納為以下幾點(diǎn):控制器是計(jì)算機(jī)的控制中心,用來(lái)實(shí)現(xiàn)計(jì)算機(jī)本身運(yùn)算過(guò)程的自動(dòng)化。它指揮計(jì)算機(jī)各部件按照指令功能的要求進(jìn)行所需要的操作。控制器從存儲(chǔ)器中取出指令,解釋指令的操作碼和地址碼,并根據(jù)譯碼,產(chǎn)生一系列的控制信號(hào),控制計(jì)算機(jī)各部件協(xié)調(diào)工作,并控制程序的執(zhí)行順序。因此,控制器的主要工作是不斷地取指令、分析指令和執(zhí)行指令。02控制器運(yùn)算器和控制器在結(jié)構(gòu)關(guān)系上是非常密切的,它們之間有大量的信息頻繁交換。在第三代計(jì)算機(jī)中,還可以從結(jié)構(gòu)上分清楚哪個(gè)是運(yùn)算器,哪個(gè)是控制器;到了第四代計(jì)算機(jī),隨著半導(dǎo)體制造工藝的進(jìn)步,將運(yùn)算器和控制器集成在一個(gè)芯片上,這樣的集成電路芯片稱(chēng)為中央處理器(CentralProcessingUnit,CPU)。存儲(chǔ)器是計(jì)算機(jī)用來(lái)存放程序和數(shù)據(jù)的記憶部件,是計(jì)算機(jī)各種信息存放和交流的中心。它的基本功能是在控制器的控制下按照指定的地址存入或取出信息。03存儲(chǔ)器早期的計(jì)算機(jī)只有主存,而現(xiàn)代計(jì)算機(jī)通常采用三級(jí)存儲(chǔ)體系,如圖所示。CPU能按存儲(chǔ)單元地址直接訪(fǎng)問(wèn)主存(內(nèi)

存);增加高速緩存(Cache)的目的是為了提

高速度,解決CPU與主存之間速度不匹配

的矛盾;增加輔存(外存)的目的是彌補(bǔ)主存容量

的不足。CPUCache主存(內(nèi)存)輔存(外存)(1)主存(內(nèi)存)由CPU直接訪(fǎng)問(wèn)的存儲(chǔ)器,它存放著正在運(yùn)行的程序和數(shù)據(jù),也可以存儲(chǔ)計(jì)算的結(jié)果或中間結(jié)果。由于主存直接與運(yùn)算器、控制器交換信息,因此要求其存取速度快,但存儲(chǔ)容量較小。目前,計(jì)算機(jī)的主存都采用大規(guī)模集成電路制成的半導(dǎo)體存儲(chǔ)器。半導(dǎo)體存儲(chǔ)器具有存儲(chǔ)密度大、體積小、重量輕、存取速度快等優(yōu)點(diǎn)。主存通常由隨機(jī)存儲(chǔ)器(RandomAccessMemory,RAM)和只讀存儲(chǔ)器(Read-OnlyMemory,ROM)組成,并通常稱(chēng)為主存儲(chǔ)器。主存儲(chǔ)器由許多存儲(chǔ)單元組成,每個(gè)存儲(chǔ)單元包含若干個(gè)存儲(chǔ)元件,每個(gè)存儲(chǔ)元件存儲(chǔ)一位二進(jìn)制代碼0或1。故而存儲(chǔ)單元可存儲(chǔ)一串二進(jìn)制代碼,稱(chēng)這串代碼為存儲(chǔ)字,這串代碼的位數(shù)稱(chēng)為存儲(chǔ)字長(zhǎng),存儲(chǔ)字長(zhǎng)可以是一個(gè)字節(jié)(8bit)或字節(jié)的偶數(shù)倍。每個(gè)存儲(chǔ)單元有一個(gè)唯一的編號(hào),這個(gè)編號(hào)稱(chēng)為該存儲(chǔ)單元的地址,可以用地址唯一地訪(fǎng)問(wèn)到一個(gè)存儲(chǔ)單元。存儲(chǔ)器的結(jié)構(gòu)如圖所示。(2)高速緩存(Cache)存取速度比主存快,但比CPU內(nèi)部的寄存器慢。Cache的容量較小,且常被置于CPU與主存之間。Cache在任何時(shí)候都只是主存中一部分內(nèi)容的拷貝。當(dāng)CPU要存取主存中的某個(gè)信息時(shí),CPU首先檢查Cache,如果其有該信息,就立即存取它;如果沒(méi)有,就從主存中將包含該信息的一個(gè)數(shù)據(jù)塊拷貝到Cache中,再訪(fǎng)問(wèn)Cache讀寫(xiě)該信息。由于計(jì)算機(jī)中的指令大部分是順序執(zhí)行的(除轉(zhuǎn)移指令外),很多數(shù)據(jù)也是順序存放和處理的(如數(shù)組),因此CPU下次要訪(fǎng)問(wèn)的信息很有可能就是該信息的后續(xù)字,這種情況下,CPU訪(fǎng)問(wèn)Cache即可,提高了處理速度。(3)輔存(外存)是主機(jī)的外圍設(shè)備,用來(lái)存儲(chǔ)大量的暫時(shí)不參加運(yùn)算或處理的數(shù)據(jù)和程序,因而允許存取速度較慢,一旦需要,可成批地與主存交換信息。它是主存的后備和補(bǔ)充,因此稱(chēng)為“輔助存儲(chǔ)器”,如磁盤(pán)存儲(chǔ)器、磁帶存儲(chǔ)器、光盤(pán)存儲(chǔ)器等。輔存的特點(diǎn)是存儲(chǔ)容量大、可靠性高、價(jià)格低,在脫機(jī)情況下可以永久地保存信息。輸入/輸出設(shè)備是計(jì)算機(jī)與外界聯(lián)系的重要橋梁,是計(jì)算機(jī)系統(tǒng)中的一個(gè)不可或缺的組成部分。04輸入/輸出設(shè)備(1)輸入設(shè)備作用是將程序和數(shù)據(jù)以計(jì)算機(jī)所能識(shí)別的形式輸入到計(jì)算機(jī)內(nèi)。常見(jiàn)的輸入設(shè)備有鍵盤(pán)、鼠標(biāo)、掃描儀、攝像機(jī)等。它們多是電子和機(jī)電混合的裝置,速度較慢,因此,一般通過(guò)接口與CPU、存儲(chǔ)器相連接。(2)輸出設(shè)備作用是將計(jì)算機(jī)處理的結(jié)果以人們所能接受或其他系統(tǒng)所要求的形式進(jìn)行輸出,如打印到紙上。常見(jiàn)的輸出設(shè)備有顯示器、打印機(jī)、繪圖儀等。輸出設(shè)備也多為機(jī)電裝置,也需通過(guò)接口與CPU、存儲(chǔ)器連接。從數(shù)據(jù)輸入輸出的角度看,磁盤(pán)機(jī)(硬盤(pán))和磁帶機(jī)也可以看作輸入/輸出設(shè)備。當(dāng)從磁盤(pán)或磁帶讀取文件時(shí),它們是輸入設(shè)備,當(dāng)向磁盤(pán)或磁帶保存文件時(shí),它們是輸出設(shè)備??偩€(xiàn)是一組可為多個(gè)功能部件共享的公共信息傳送線(xiàn)路。它將上述各大部件連接成一個(gè)有機(jī)整體,如圖所示。總線(xiàn)規(guī)定了計(jì)算機(jī)組件間交換數(shù)據(jù)的規(guī)范化方式,以一種通用的方式為各組件提供數(shù)據(jù)傳送和控制邏輯??偩€(xiàn)能分時(shí)接收各部件送來(lái)的信息,并發(fā)送信息到各有關(guān)部件中。03總線(xiàn)地址總線(xiàn)是單向的,CPU用它來(lái)傳送主存單元地址或輸入/輸出端口地址。數(shù)據(jù)總線(xiàn)主要用于傳送各大部件之間的數(shù)據(jù)信息,如數(shù)字、命令字、狀態(tài)字等??刂瓶偩€(xiàn)主要用于傳送控制信號(hào)和時(shí)序信號(hào),這些信號(hào)用來(lái)指示數(shù)據(jù)是要讀出還是寫(xiě)入CPU,CPU是要訪(fǎng)問(wèn)存儲(chǔ)器還是輸入/輸出設(shè)備,輸入/輸出設(shè)備或存儲(chǔ)器是否已就緒等。計(jì)算機(jī)軟件1.3計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)的一個(gè)重要組成部分,它將各種計(jì)算機(jī)的指令組合起來(lái),使計(jì)算機(jī)硬件部分能正常工作并完成復(fù)雜的計(jì)算任務(wù)。通常把一個(gè)完整的程序及相應(yīng)的文檔稱(chēng)為軟件。1.3.1計(jì)算機(jī)軟件的分類(lèi)系統(tǒng)軟件是一組保證計(jì)算機(jī)系統(tǒng)高效、正確運(yùn)行的基礎(chǔ)軟件,通常作為系統(tǒng)資源提供給用戶(hù)使用。主要包括操作系統(tǒng)、語(yǔ)言處理系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)、分布式軟件系統(tǒng)、網(wǎng)絡(luò)軟件系統(tǒng)、各種服務(wù)程序等。應(yīng)用軟件是指用戶(hù)為解決某個(gè)應(yīng)用領(lǐng)域中的問(wèn)題而編制的程序。包括各種科學(xué)計(jì)算類(lèi)軟件、工程設(shè)計(jì)類(lèi)軟件、數(shù)據(jù)統(tǒng)計(jì)與處理軟件、情報(bào)檢索軟件、企業(yè)管理軟件、生產(chǎn)過(guò)程控制軟件、文字處理軟件、表格處理軟件、圖形處理軟件等。1.3.2程序設(shè)計(jì)語(yǔ)言機(jī)器語(yǔ)言是一種二進(jìn)制語(yǔ)言,是用二進(jìn)制代碼來(lái)描述機(jī)器指令的。用機(jī)器語(yǔ)言編寫(xiě)的程序具有充分發(fā)揮硬件功能的特點(diǎn),機(jī)器語(yǔ)言又是計(jì)算機(jī)唯一能直接識(shí)別、直接執(zhí)行的計(jì)算機(jī)語(yǔ)言,所以程序的運(yùn)行速度很快。但是用機(jī)器語(yǔ)言所編寫(xiě)的程序很不直觀,難懂、難寫(xiě)、難記,也難以修改和維護(hù)。01機(jī)器語(yǔ)言同時(shí),機(jī)器語(yǔ)言是每種計(jì)算機(jī)所固有的,不同類(lèi)型的計(jì)算機(jī),其指令系統(tǒng)和指令格式都不一樣。因此,針對(duì)某一種型號(hào)的計(jì)算機(jī)所編寫(xiě)的程序就不能在另一種型號(hào)計(jì)算機(jī)上運(yùn)行,即機(jī)器語(yǔ)言程序沒(méi)有通用性。用機(jī)器語(yǔ)言編寫(xiě)程序有很多困難,為了便于人們使用計(jì)算機(jī),20世紀(jì)50年代初出現(xiàn)了匯編語(yǔ)言。匯編語(yǔ)言和機(jī)器語(yǔ)言基本上是一一對(duì)應(yīng)的,但在表示方法上有了根本性的改進(jìn),它用一種助記符來(lái)代替操作碼,用符號(hào)來(lái)表示操作數(shù)地址(地址碼),這些助記符通常使用指令功能英文單詞的縮寫(xiě),以便于記憶。例如,用ADD表示加法,用MOV表示傳送等。02匯編語(yǔ)言匯編語(yǔ)言比較直觀、易懂、易用、易記憶,特點(diǎn)是與特定的計(jì)算機(jī)結(jié)構(gòu)及其指令系統(tǒng)密切相關(guān),其助記符與其機(jī)器語(yǔ)言操作碼是一一對(duì)應(yīng)的。不同型號(hào)CPU的計(jì)算機(jī),針對(duì)同一問(wèn)題所編寫(xiě)的匯編語(yǔ)言程序往往是互不通用的。用匯編語(yǔ)言編寫(xiě)的程序質(zhì)量高,執(zhí)行速度快,占用主存空間少,因此常用于編寫(xiě)系統(tǒng)軟件、實(shí)時(shí)控制程序、經(jīng)常使用的標(biāo)準(zhǔn)子程序和用于直接控制計(jì)算機(jī)的外圍設(shè)備或端口數(shù)據(jù)輸入輸出程序等。匯編語(yǔ)言和機(jī)器語(yǔ)言一樣,也是面向機(jī)器的程序設(shè)計(jì)語(yǔ)言,通用性差,使用仍不方便。機(jī)器語(yǔ)言和匯編語(yǔ)言一般都稱(chēng)為低級(jí)語(yǔ)言。高級(jí)語(yǔ)言(如C語(yǔ)言、C++語(yǔ)言、JAVA語(yǔ)言等)是為了使程序語(yǔ)言能更貼近人類(lèi)的自然語(yǔ)言,同時(shí)又不依賴(lài)于計(jì)算機(jī)硬件而產(chǎn)生的。用高級(jí)語(yǔ)言編寫(xiě)的程序是由一系列的語(yǔ)句(或函數(shù))組成的。每一條語(yǔ)句常??梢詫?duì)應(yīng)幾條、十幾條,甚至幾十條、上百條機(jī)器指令,因此用高級(jí)語(yǔ)言編寫(xiě)計(jì)算機(jī)程序大大提高了編程效率。03高級(jí)語(yǔ)言計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu)1.4計(jì)算機(jī)不能簡(jiǎn)單地認(rèn)為是一種電子設(shè)備,而是一個(gè)十分復(fù)雜的軟、硬件結(jié)合而成的整體。因此,可以將計(jì)算機(jī)系統(tǒng)分為多級(jí)層次結(jié)構(gòu),如圖所示。其目的是分清各級(jí)層次結(jié)構(gòu)彼此之間的界面,明確各自的功能,以便構(gòu)成合理、高效的計(jì)算機(jī)系統(tǒng)。第0級(jí)硬件操作時(shí)序,實(shí)際的硬件層,是硬件組成的實(shí)體。第1級(jí)微程序機(jī)器層,實(shí)際的硬件層,它由機(jī)器硬件直接執(zhí)行微指令。第2級(jí)傳統(tǒng)機(jī)器語(yǔ)言層,實(shí)際的硬件層,由微程序解釋機(jī)器指令系統(tǒng)。第3級(jí)操作系統(tǒng)層,由操作系統(tǒng)程序?qū)崿F(xiàn)。操作系統(tǒng)程序是由機(jī)器指令和廣義指令組成的。其中,廣義指令是為擴(kuò)展機(jī)器功能而設(shè)置的,是由操作系統(tǒng)定義和解釋的軟件指令。這一層也稱(chēng)為混合層。第5級(jí)高級(jí)語(yǔ)言層,高級(jí)語(yǔ)言層為方便用戶(hù)編寫(xiě)各類(lèi)應(yīng)用程序而設(shè)置。它是面向用戶(hù)的。該層由各種高級(jí)語(yǔ)言編譯程序支持和執(zhí)行。第4級(jí)匯編語(yǔ)言層,匯編語(yǔ)言是一種符號(hào)形式語(yǔ)言,用戶(hù)可通過(guò)它編寫(xiě)匯編語(yǔ)言源程序。這一層由匯編程序支持和執(zhí)行。第6級(jí)應(yīng)用語(yǔ)言層,應(yīng)用語(yǔ)言層是直接面向某個(gè)應(yīng)用領(lǐng)域,為方便用戶(hù)編寫(xiě)該應(yīng)用領(lǐng)域的應(yīng)用程序而設(shè)置的。由相應(yīng)的應(yīng)用軟件包支持和執(zhí)行。在多級(jí)層次結(jié)構(gòu)中,第0,1,2級(jí)是實(shí)機(jī)器,上面幾層均為虛機(jī)器(虛擬機(jī))。傳統(tǒng)機(jī)器語(yǔ)言層和操作系統(tǒng)層是虛、實(shí)機(jī)器的分界面。軟、硬件功能的分配,決定了虛、實(shí)機(jī)器的界面。利用多級(jí)層次結(jié)構(gòu)觀點(diǎn),可以在設(shè)計(jì)計(jì)算機(jī)系統(tǒng)時(shí),明確硬件和軟件及在虛機(jī)器中各層次應(yīng)完成的功能。計(jì)算機(jī)的性能指標(biāo)1.5CPU的工作節(jié)拍是由時(shí)鐘來(lái)控制的,時(shí)鐘不斷產(chǎn)生固定頻率的時(shí)鐘脈沖,這個(gè)時(shí)鐘的頻率(f)就是CPU的主頻。通常用一秒鐘內(nèi)發(fā)出的電子脈沖數(shù)來(lái)表示,常用單位是兆赫茲(MHz)、吉赫茲(GHz)。01主頻CPU時(shí)鐘周期(T)是主頻的倒數(shù),即T=1/f,常用單位是μs,ns。02CPU時(shí)鐘周期CPI是執(zhí)行一條指令所需要的平均時(shí)鐘周期數(shù),計(jì)算公式如下:CPI=執(zhí)行某段程序所需的CPU時(shí)鐘周期數(shù)÷程序包含的指令條數(shù)

(1-1)03CPICPU執(zhí)行時(shí)間(TCPU)是運(yùn)行一個(gè)程序所花費(fèi)的時(shí)間,計(jì)算公式如下:TCPU=IN×CPI×T

(1-2)其中:IN為執(zhí)行程序中指令的總數(shù)CPI為執(zhí)行每條指令所需的平均時(shí)鐘周期數(shù)T為時(shí)鐘周期04CPU執(zhí)行時(shí)間運(yùn)算速度可以用每秒鐘執(zhí)行多少條指令或完成多少次浮點(diǎn)運(yùn)算來(lái)表示,可以用MIPS或MFLOPS度量。MIPS(百萬(wàn)條指令/秒):CPU每秒鐘平均執(zhí)行的定點(diǎn)指令條數(shù)(百萬(wàn)條),計(jì)算公式如下:MIPS=IN/(TCPU×106)=IN/(IN×CPI×T×106)=f/(CPI×106)(1-3)其中:IN為執(zhí)行該程序的總指令數(shù)TCPU為執(zhí)行該程序的總時(shí)間T為CPU時(shí)鐘周期,f為主頻(f=1/T)05運(yùn)算速度MFLOPS(百萬(wàn)次浮點(diǎn)運(yùn)算/秒):CPU每秒鐘平均執(zhí)行的浮點(diǎn)運(yùn)算次數(shù)(百萬(wàn)次),計(jì)算公式如下:MFLOPS=IFN/(TCPU×106)(1-4)其中:IFN為程序中浮點(diǎn)運(yùn)算次數(shù)TCPU為執(zhí)行該程序的總時(shí)間MIPS和MFLOPS分別反映了計(jì)算機(jī)的定點(diǎn)運(yùn)算能力和浮點(diǎn)運(yùn)算能力?;咀珠L(zhǎng)是直接參與運(yùn)算的數(shù)據(jù)字的二進(jìn)制位數(shù)。決定了寄存器、ALU、數(shù)據(jù)總線(xiàn)等的位數(shù),直接影響著硬件的造價(jià)。字長(zhǎng)標(biāo)志著運(yùn)算精度,位數(shù)越多,精度越高。一般機(jī)器的字長(zhǎng)都是字節(jié)的1,2,4,8倍,即微型計(jì)算機(jī)的字長(zhǎng)為8位、16位、32位和64位。例如,286機(jī)為16位機(jī),386以上的機(jī)型是32位機(jī),Intel公司推出的安騰(Itanium)機(jī)是64位機(jī)。06基本字長(zhǎng)07存儲(chǔ)容量存儲(chǔ)容量是計(jì)算機(jī)能存儲(chǔ)信息的總字節(jié)量,主存中能存儲(chǔ)的信息總字節(jié)數(shù)稱(chēng)為主存容量(也可用所存儲(chǔ)的二進(jìn)制位的總數(shù)表示存儲(chǔ)容量)。字節(jié)(Byte,簡(jiǎn)寫(xiě)為B)是作為一個(gè)單位來(lái)處理一串二進(jìn)制的數(shù)位,通常以8個(gè)二進(jìn)制位(bit)作為一個(gè)字節(jié)。每1024個(gè)字節(jié)稱(chēng)為1K字節(jié)(1KB)。存儲(chǔ)容量的單位還有MB(兆字節(jié))、GB(吉字節(jié))和TB(太字節(jié))等。它們之間的關(guān)系是:1KB=1024B=210B,1MB=1024KB=220B,1GB=1024MB=230B,1TB=1024GB=240B。08主存存取周期主存存取周期是連續(xù)兩次訪(fǎng)問(wèn)主存所允許的最小時(shí)間間隔。微型機(jī)的主存目前都由大規(guī)模集成電路制成,其存取周期很短,約為幾十納秒(ns)到一百納秒左右。衡量一臺(tái)計(jì)算機(jī)系統(tǒng)的性能指標(biāo)很多,除上面列舉的主要指標(biāo)外,還應(yīng)考慮機(jī)器的兼容性(包括數(shù)據(jù)和文件的兼容、程序兼容、系統(tǒng)兼容和設(shè)備兼容),系統(tǒng)的可靠性(平均無(wú)故障工作時(shí)間),系統(tǒng)的可維護(hù)性(平均修復(fù)時(shí)間),機(jī)器允許配置的外圍設(shè)備的最大數(shù)目,計(jì)算機(jī)系統(tǒng)的漢字處理能力,數(shù)據(jù)庫(kù)管理系統(tǒng)及網(wǎng)絡(luò)性能等。例1-1用一臺(tái)40MHz的處理器執(zhí)行標(biāo)準(zhǔn)測(cè)試程序,它所包含的各類(lèi)型指令所占比例及CPI數(shù)如表所示。求有效的CPI和MIPS速率。指令類(lèi)型CPI指令所占比例算術(shù)和邏輯160%高速緩存命中的訪(fǎng)存218%轉(zhuǎn)移412%高速緩存失效的訪(fǎng)存810%解CPI是執(zhí)行一條指令所需要的平均時(shí)鐘周期數(shù)。本標(biāo)準(zhǔn)測(cè)試程序共包含4種指令,那么CPI就是這4種指令的數(shù)學(xué)期望。即:CPI=1×60%+2×18%+4×12%+8×10%=2.24(周期/指令)MIPS即每秒執(zhí)行百萬(wàn)條指令數(shù)。已知處理器時(shí)鐘頻率為40MHz,即每秒包含40M個(gè)時(shí)鐘周期,故:MIPS=f/(CPI×106)=40/CPI=40/2.24=17.9(百萬(wàn)條指令/秒)例1-2某臺(tái)計(jì)算機(jī)只有Load/Store指令能對(duì)存儲(chǔ)器進(jìn)行讀、寫(xiě)操作,其他指令只對(duì)寄存器進(jìn)行操作。根據(jù)程序追蹤實(shí)驗(yàn)結(jié)果,已知每條指令所占的比例及CPI數(shù)如表所示。求上述情況的平均CPI。指令類(lèi)型CPI指令所占比例算術(shù)邏輯指令143%Load指令221%Store指令212%轉(zhuǎn)移指令224%解本處理機(jī)共包含4種指令,那么CPI就是這4種指令的數(shù)學(xué)期望。即:CPI=1×43%+2×21%+2×12%+2×24%=1.57(周期/指令)例1-3計(jì)算機(jī)A和B是采用不同主頻的CPU芯片,片內(nèi)邏輯電路完全相同。若A機(jī)的CPU主頻為8MHz,B機(jī)為12MHz,則A機(jī)的CPU時(shí)鐘周期為多少?若A機(jī)的平均指令執(zhí)行速度為0.4MIPS,那么A機(jī)的平均指令周期為多少?B機(jī)的平均指令執(zhí)行速度為多少?(1)(3)(2)解(1)A機(jī)的CPU主頻為8MHz,所以A機(jī)的CPU時(shí)鐘周期T=1/(8MHz)=0.125μs。(2)A機(jī)的平均指令周期=1/(0.4MIPS)=2.5μs。(3)A機(jī)平均每條指令的時(shí)鐘周期數(shù)=(2.5μs)/(0.125μs)=20。因A機(jī)和B機(jī)的片內(nèi)邏輯電路完全相同,所以B機(jī)平均每條指令的時(shí)鐘周期數(shù)也為20。由于B機(jī)的CPU主頻為12MHz,所以,B機(jī)的CPU時(shí)鐘周期=1/(12MHz)=1/12μs。B機(jī)的平均指令周期=20×(1/12μs)=5/3μs。B機(jī)的平均指令執(zhí)行速度=1/(5/3μs)=0.6MIPS。常見(jiàn)問(wèn)題和易混淆知識(shí)點(diǎn)1.6翻譯程序是指把高級(jí)語(yǔ)言源程序翻譯成機(jī)器語(yǔ)言程序(目標(biāo)代碼)的軟件。01翻譯程序、匯編程序、編譯程序、解釋程序的區(qū)別和聯(lián)系編譯程序解釋程序?qū)⒏呒?jí)語(yǔ)言源程序一次全部翻譯成目標(biāo)程序,每次執(zhí)行程序時(shí),只執(zhí)行目標(biāo)程序,因此,只要源程序不變,就無(wú)須重新翻譯將源程序的一條語(yǔ)句翻譯成對(duì)應(yīng)的機(jī)器目標(biāo)代碼,并立即執(zhí)行,然后翻譯下一條源程序語(yǔ)句并執(zhí)行,直至所有源程序語(yǔ)句全部被翻譯并執(zhí)行完翻譯程序有兩種:匯編程序也是一種語(yǔ)言翻譯程序,它將匯編語(yǔ)言源程序翻譯為機(jī)器語(yǔ)言程序。匯編語(yǔ)言是一種面向機(jī)器的低級(jí)語(yǔ)言,是機(jī)器語(yǔ)言的符號(hào)表示,與機(jī)器語(yǔ)言一一對(duì)應(yīng)。編譯程序與匯編程序的區(qū)別:如果源語(yǔ)言是諸如C,C++,JAVA等高級(jí)語(yǔ)言,而目標(biāo)語(yǔ)言是諸如匯編語(yǔ)言或機(jī)器語(yǔ)言之類(lèi)的低級(jí)語(yǔ)言,這樣的一個(gè)翻譯程序稱(chēng)為編譯程序。如果源語(yǔ)言是匯編語(yǔ)言,而目標(biāo)語(yǔ)言是機(jī)器語(yǔ)言,這樣的一個(gè)翻譯程序稱(chēng)為匯編程序。02計(jì)算機(jī)體系結(jié)構(gòu)和計(jì)算機(jī)組成的區(qū)別和聯(lián)系計(jì)算機(jī)體系結(jié)構(gòu)是指機(jī)器語(yǔ)言或匯編語(yǔ)言程序員所看得到的傳統(tǒng)機(jī)器的屬性,包括指令集、數(shù)據(jù)類(lèi)型、存儲(chǔ)器尋址技術(shù)等,大都屬于抽象的屬性。計(jì)算機(jī)組成是指如何實(shí)現(xiàn)計(jì)算機(jī)體系結(jié)構(gòu)所體現(xiàn)的屬性,它包含許多對(duì)程序員來(lái)說(shuō)是透明的硬件細(xì)節(jié)。許多計(jì)算機(jī)廠(chǎng)商提供一系列體系結(jié)構(gòu)相同的計(jì)算機(jī),而它們的組成卻有相當(dāng)大的差別,即使是同一系列的不同型號(hào)機(jī)器,其性能和價(jià)格也有很大差異計(jì)算機(jī)的硬件包括運(yùn)算器、控制器、存儲(chǔ)器、輸入/輸出設(shè)備和總線(xiàn)。隨著半導(dǎo)體制造工藝的進(jìn)步,將運(yùn)算器和控制器集成在一個(gè)芯片上,這樣的集成電路芯片稱(chēng)為中央處理器(CPU)計(jì)算機(jī)軟件分為系統(tǒng)軟件和應(yīng)用軟件兩大類(lèi)計(jì)算機(jī)系統(tǒng)是一個(gè)由硬件、軟件組成的多級(jí)層次結(jié)構(gòu)計(jì)算機(jī)的性能指標(biāo)包括主頻、CPU時(shí)鐘周期、CPI、CPU執(zhí)行時(shí)間、運(yùn)算速度、基本字長(zhǎng)、主存容量和主存存取周期等本章主要介紹了計(jì)算機(jī)系統(tǒng)概論。通過(guò)本章的學(xué)習(xí),讀者應(yīng)重點(diǎn)掌握以上內(nèi)容。目錄concents2.1數(shù)制與編碼2.2定點(diǎn)數(shù)的表示2.3浮點(diǎn)數(shù)的表示2.4常見(jiàn)問(wèn)題和易混淆知識(shí)點(diǎn)數(shù)制與編碼2.1計(jì)算機(jī)的基本功能是對(duì)信息進(jìn)行加工處理。信息包括數(shù)據(jù)、文字、聲音、圖形和圖像等。數(shù)據(jù)有兩類(lèi),一類(lèi)是數(shù)值數(shù)據(jù),如+123,?12.3,26等,有“量”的概念;另一類(lèi)是非數(shù)值數(shù)據(jù),如各種字母和符號(hào),又稱(chēng)符號(hào)數(shù)據(jù)。無(wú)論是數(shù)值數(shù)據(jù)還是非數(shù)值數(shù)據(jù),在計(jì)算機(jī)中都是用二進(jìn)制數(shù)碼表示的。而文字、聲音、圖形和圖像等信息要在計(jì)算機(jī)中處理,都要事先數(shù)字化,即把聲音、圖形、圖像等信息轉(zhuǎn)換為二進(jìn)制數(shù)碼。在計(jì)算機(jī)內(nèi)部,各種信息都必須采用數(shù)字化編碼的形式才能傳送、存儲(chǔ)和處理加工。所謂編碼,是用來(lái)將信息從一種形式轉(zhuǎn)變?yōu)榱硪环N形式的符號(hào)系統(tǒng),通常選用少量最簡(jiǎn)單的基本符號(hào)和一定的組合規(guī)則,以表示出大量復(fù)雜多樣的信息。信息的數(shù)字化編碼,是指用二進(jìn)制數(shù)碼(0或1),并選用一定的組合規(guī)則,來(lái)表示數(shù)據(jù)、文字、聲音、圖形和圖像等各種復(fù)雜的信息。2.1.1常用的進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換進(jìn)位計(jì)數(shù)制是用一組固定的符號(hào)和統(tǒng)一的規(guī)則來(lái)表示數(shù)值的方法。01進(jìn)位計(jì)數(shù)制按照進(jìn)位計(jì)數(shù)制的方法表示數(shù),不同的數(shù)制均涉及兩個(gè)基本概念:基數(shù)和權(quán)?;鶖?shù)進(jìn)位計(jì)數(shù)制中所具有的數(shù)字符號(hào)的個(gè)數(shù)。權(quán)每位數(shù)字的值等于數(shù)字乘以所在位數(shù)的相關(guān)常數(shù),這個(gè)常數(shù)就是權(quán)。任意一個(gè)r進(jìn)制數(shù)N,設(shè)整數(shù)部分為n位,小數(shù)部分為m位,則N代表的實(shí)際值可表示為:

其中,Di是位序號(hào)為i的位上的數(shù)字符號(hào)。(2-1)其中高級(jí)語(yǔ)言的發(fā)展真正促進(jìn)了軟件的發(fā)展。高級(jí)語(yǔ)言的發(fā)展又經(jīng)歷了幾個(gè)階段:第一階段代表語(yǔ)言是適用于科學(xué)計(jì)算和工程計(jì)算的FORTRAN語(yǔ)言第二階段結(jié)構(gòu)化程序設(shè)計(jì)階段,其代表語(yǔ)言是PASCAL第三階段面向?qū)ο蟪绦蛟O(shè)計(jì)階段,其代表語(yǔ)言是C++近年來(lái)隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,又出現(xiàn)了可適應(yīng)網(wǎng)絡(luò)環(huán)境的面向?qū)ο笳Z(yǔ)言JAVA等。與此同時(shí),直接影響計(jì)算機(jī)系統(tǒng)性能提升的各種系統(tǒng)軟件也有了長(zhǎng)足的發(fā)展,特別是操作系統(tǒng),如Windows,Linux,UNIX等。在計(jì)算機(jī)領(lǐng)域中,用于表示數(shù)值的進(jìn)位計(jì)數(shù)制主要有4種:(1)十進(jìn)制(Decimal,用D表示,可省略)有10個(gè)不同的數(shù)字符號(hào)(0,1,2,3,4,5,6,7,8,9),低位向高位進(jìn)位的規(guī)律是“逢十進(jìn)一”。例如:879=8×102+7×101+9×100其中,10稱(chēng)為十進(jìn)制的基數(shù),102,101,100稱(chēng)為各數(shù)位的權(quán)。(2)二進(jìn)制(Binary,用B表示)有2個(gè)不同的數(shù)字符號(hào)(0和1),其進(jìn)位規(guī)律是“逢二進(jìn)一”。例如:1101.1011B=(1101.1011)2=1×23+1×22+0×21+1×20+1×2?1+0×2?2+1×2?3+1×2?4其中,2稱(chēng)為二進(jìn)制的基數(shù),23,22,21,20,2?1,2?2,2?3,2?4稱(chēng)為各數(shù)位的權(quán)。(3)八進(jìn)制(Octal,用O表示)有8個(gè)不同的數(shù)字符號(hào)(0,1,2,3,4,5,6,7),其進(jìn)位規(guī)律是“逢八進(jìn)一”。例如:678O=(678)8=6×82+7×81+8×80其中,8稱(chēng)為八進(jìn)制的基數(shù),82,81,80稱(chēng)為各數(shù)位的權(quán)。(4)十六進(jìn)制(Hexadecimal,用H表示)有16個(gè)不同的數(shù)字符號(hào)(0~9,A~F),其進(jìn)位規(guī)律是“逢十六進(jìn)一”。例如:2AB.1CH=(2AB.1C)16=2×162+A×161+B×160+1×16?1+C×16?2其中,16稱(chēng)為十六進(jìn)制的基數(shù),162,161,160,16?1,16?2稱(chēng)為各數(shù)位的權(quán)。(1)其他進(jìn)制轉(zhuǎn)換為十進(jìn)制。方法是:將其他進(jìn)制數(shù)按權(quán)展開(kāi),然后各項(xiàng)相加,就得到相應(yīng)的十進(jìn)制數(shù)。02常用進(jìn)位計(jì)數(shù)制間的相互轉(zhuǎn)換例2-1將二進(jìn)制數(shù)10110.101轉(zhuǎn)換成十進(jìn)制數(shù)。按權(quán)展開(kāi)(10110.101)2=1×24+0×23+1×22+1×21+0×20+1×2?1+0×2?2+1×2?3 =16+0+4+2+0+0.5+0+0.125 =(22.625)10例2-2將八進(jìn)制數(shù)654.23轉(zhuǎn)換成十進(jìn)制數(shù)。按權(quán)展開(kāi)(654.23)8=6×82+5×81+4×80+2×8?1+3×8?2

=384+40+4+0.25+0.046875 =(428.296875)10例2-3將十六進(jìn)制數(shù)3A6E.5轉(zhuǎn)換成十進(jìn)制數(shù)。按權(quán)展開(kāi)(3A6E.5)16=3×163+10×162+6×161+14×160+5×16?1 =12288+2560+96+14+0.3125 =(14958.3125)10(2)十進(jìn)制轉(zhuǎn)換為二進(jìn)制。整數(shù)部分的轉(zhuǎn)換采用“除2取余法”,即整數(shù)部分不斷除以2,并記下每次所得余數(shù),所有余數(shù)按倒序排列即為相應(yīng)的二進(jìn)制數(shù)。小數(shù)部分的轉(zhuǎn)換則采用“乘2取整法”,并將所得整數(shù)按順序排列。4322222211052120取余數(shù)整數(shù)部分110101小數(shù)部分取整數(shù)0.625×2=1.25

10.25×2=0.5 00.5×2=1

1例2-4將十進(jìn)制數(shù)43.625轉(zhuǎn)換成二進(jìn)制數(shù)。將43.625的整數(shù)部分和小數(shù)部分分開(kāi)做如下處理,所以,(43.625)10=(101011.101)2。(3)二進(jìn)制、八進(jìn)制、十六進(jìn)制之間的轉(zhuǎn)換。根據(jù)它們之間存在特殊的關(guān)系:81=23,161=24,即1位八進(jìn)制數(shù)相當(dāng)于3位二進(jìn)制數(shù),1位十六進(jìn)制數(shù)相當(dāng)于4位二進(jìn)制數(shù),對(duì)照下表進(jìn)行轉(zhuǎn)換即可。十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制00001111210223113341004451015561106671117781000108十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制9100111910101012A11101113B12110014C13110115D14111016E15111117F1610000201017100012111①二進(jìn)制與八進(jìn)制的相互轉(zhuǎn)換。以小數(shù)點(diǎn)為中心,整數(shù)部分自右向左,每3位為1組,最后1組不滿(mǎn)3位時(shí)高位補(bǔ)0;小數(shù)部分自左向右,每3位為1組,最后1組不滿(mǎn)3位時(shí)低位補(bǔ)0,將每組二進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)即可。相反,八進(jìn)制轉(zhuǎn)換成二進(jìn)制時(shí),將1位的八進(jìn)制數(shù)轉(zhuǎn)換成3位的二進(jìn)制數(shù)即可。例2-5將二進(jìn)制數(shù)10101011.110101轉(zhuǎn)換成八進(jìn)制數(shù)。(010

101

011.110

101)2

(整數(shù)高位補(bǔ)0)

所以,(010101011.110101)2=(253.65)8。253.65

例2-6將八進(jìn)制數(shù)162.52轉(zhuǎn)換成二進(jìn)制數(shù)。

(162.52)8

所以,(162.52)8=(1110010.10101)2。001

110

010.101

010②二進(jìn)制與十六進(jìn)制的相互轉(zhuǎn)換。以小數(shù)點(diǎn)為中心,整數(shù)部分自右向左,每4位為1組,最后1組不滿(mǎn)4位時(shí)高位補(bǔ)0;小數(shù)部分自左向右,每4位為1組,最后1組不滿(mǎn)4位時(shí)低位補(bǔ)0,將每組二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)即可。相反,十六進(jìn)制轉(zhuǎn)換成二進(jìn)制時(shí),將1位的十六進(jìn)制數(shù)轉(zhuǎn)換成4位的二進(jìn)制數(shù)即可。例2-7將二進(jìn)制數(shù)10101011.110101轉(zhuǎn)換成十六進(jìn)制數(shù)。(1010

1011.1101

0100)2(小數(shù)低位補(bǔ)0)所以,(10101011.110101)2=(AB.D4)16。AB.D4例2-8將十六進(jìn)制數(shù)A6.3C轉(zhuǎn)換成二進(jìn)制數(shù)。

(A6.3C)16所以,(A6.3C)16=(10100110.001111)2。1010

0110.0011

11002.1.2BCD碼為了使計(jì)算機(jī)能識(shí)別和存儲(chǔ)十進(jìn)制數(shù),并能直接用十進(jìn)制數(shù)形式進(jìn)行運(yùn)算,需要對(duì)十進(jìn)制數(shù)進(jìn)行編碼,即用0和1的不同組合形式來(lái)表示十進(jìn)制數(shù)的各個(gè)數(shù)位上的數(shù)字,進(jìn)而表示一個(gè)十進(jìn)制數(shù)。將十進(jìn)制數(shù)表示為二進(jìn)制編碼的形式,稱(chēng)為十進(jìn)制數(shù)的二進(jìn)制編碼,簡(jiǎn)稱(chēng)二-十進(jìn)制編碼或BCD(BinaryCodedDecimal)碼。BCD碼有多種編碼方法,常用的有8421碼,如表所示。8421碼是將十進(jìn)制數(shù)碼0~9中的每個(gè)數(shù)分別用4位二進(jìn)制編碼表示,比較直觀。十進(jìn)制數(shù)8421碼00000100012001030011401005010160110701118100091001十進(jìn)制數(shù)8421碼10000100001100010001120001001013000100111400010100150001010116000101101700010111180001100019000110012.1.3字符與字符串由于計(jì)算機(jī)內(nèi)部只能識(shí)別和處理二進(jìn)制代碼,所以字符都必須按照一定的規(guī)則用一組二進(jìn)制編碼來(lái)表示。字符編碼采用國(guó)際通用的美國(guó)標(biāo)準(zhǔn)信息交換碼(AmericanStandardCodeforInformationInterchange,ASCII),每個(gè)ASCII碼以1個(gè)字節(jié)(Byte)存儲(chǔ),從數(shù)字0到數(shù)字127代表不同的常用字符。01ASCII碼常用字符與ASCII碼值對(duì)照關(guān)系如表所示。碼值字符0NUL1SOH2STX3ETX4EOT5ENQ6ACK7BEL8BS9HT碼值字符10LF11VT12FF13CR14SO15SI16DLE17DC118DC219DC3碼值字符20DC421NAK22SYN23ETB24CAN25EM26SUB27ESC28FS29GS碼值字符30RS31US32SP33!34"35#36$37%38&39'碼值字符40(41)42*43+44,45-46.47/480491碼值字符50251352453554655756857958:59;碼值字符60<61=62>63?64@65A66B67C68D69E碼值字符70F71G72H73I74J75K76L77M78N79O碼值字符80P81Q82R83S84T85U86V87W88X89Y碼值字符90Z91[92\93]94^95_96`97a98b99c碼值字符100d101e102f103g104h105i106j107k108l109m碼值字符110n111o112p113q114r115s116t117u118v119w碼值字符120x121y122z123{124|125}126~127DEL字符串是指連續(xù)的一串字符,通常情況下,占用主存中連續(xù)的多個(gè)字節(jié),每個(gè)字節(jié)存儲(chǔ)一個(gè)字符。主存字(主存單元)由2個(gè)或4個(gè)字節(jié)組成時(shí),在同一個(gè)主存字中,既可按先存儲(chǔ)低位字節(jié)、后存儲(chǔ)高位字節(jié)的順序存放字符串的內(nèi)容(又稱(chēng)小端模式),也可按先存儲(chǔ)高位字節(jié)、后存儲(chǔ)低位字節(jié)的順序存放字符串的內(nèi)容(又稱(chēng)大端模式)。這兩種存放方式都是常用方式,不同計(jì)算機(jī)可以選用其中任何一種(甚至是同時(shí)采用)。02字符串的存放例如,字符串“IF_A>B_THEN_READ(C)_”(其中“_”代表空格),它從高位字節(jié)到低位字節(jié)依次存放在主存中,如圖所示。IF空A>B空THEN空READ(C)空其中主存字長(zhǎng)度為4個(gè)字節(jié)。每個(gè)字節(jié)中存放相應(yīng)字符的ASCII碼值,注意空格“_”也占一個(gè)字節(jié)的位置。因此,每個(gè)字節(jié)分別存放十進(jìn)制的73,70,32,65,62,66,32,84,72,69,78,32,82,69,65,68,40,67,41,32。2.1.4漢字編碼漢字的編碼比較特殊,漢字編碼可分為機(jī)內(nèi)碼和機(jī)外碼兩類(lèi),機(jī)內(nèi)碼是在計(jì)算機(jī)內(nèi)部使用的用二進(jìn)制代碼表示的漢字編碼,用于在計(jì)算機(jī)內(nèi)部存儲(chǔ)、交換、處理加工漢字信息;而機(jī)外碼是指不在計(jì)算機(jī)內(nèi)使用的漢字編碼,主要是指漢字輸入碼,此外還有供輸出的漢字字模碼。國(guó)標(biāo)碼是指1981年我國(guó)公布的“中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)信息交換漢字編碼”,是一種國(guó)家標(biāo)準(zhǔn)編碼,代號(hào)為GB2312—1980。它以94個(gè)可顯示的ASCII碼字符為基集,由兩個(gè)字節(jié)構(gòu)成。國(guó)標(biāo)碼與ASCII碼屬同一制式,可以認(rèn)為國(guó)標(biāo)碼是擴(kuò)展的ASCII碼。01國(guó)標(biāo)碼GB2312—1980規(guī)定,所有的國(guó)標(biāo)漢字與符號(hào)組成一個(gè)94×94的矩陣。在此矩陣中,每一行稱(chēng)為一個(gè)“區(qū)”,每一列稱(chēng)為一個(gè)“位”。因此,該矩陣分成94個(gè)區(qū)(區(qū)號(hào)為01~94),每區(qū)有94個(gè)位(位號(hào)為01~94),一個(gè)漢字所在的區(qū)號(hào)和位號(hào)組合在一起就構(gòu)成了該漢字的“國(guó)標(biāo)區(qū)位碼”,簡(jiǎn)稱(chēng)國(guó)標(biāo)碼。國(guó)標(biāo)碼用連續(xù)的兩個(gè)字節(jié)表示,高位字節(jié)為區(qū)號(hào),低位字節(jié)為位號(hào),因此,總共可表示94×94=8836個(gè)漢字或符號(hào)。1~9區(qū)非漢字的各種字母、數(shù)字符和圖符16~55區(qū)一級(jí)漢字區(qū)(最常用漢字),按漢語(yǔ)拼音排序56~87區(qū)二級(jí)漢字區(qū)(次常用漢字),按偏旁部首排序10~15區(qū)和88~94區(qū)空白區(qū),專(zhuān)供用戶(hù)自定義專(zhuān)用符號(hào)和自造漢字字型及填充一、二級(jí)漢字中沒(méi)有的漢字使用國(guó)標(biāo)碼用兩個(gè)字節(jié)的十六進(jìn)制數(shù)表示,如漢字“文”的國(guó)標(biāo)碼是“4E44H”。計(jì)算機(jī)系統(tǒng)中用來(lái)表示中文或西文信息的代碼稱(chēng)為機(jī)內(nèi)碼。ASCII碼是一種西文機(jī)內(nèi)碼,在計(jì)算機(jī)系統(tǒng)內(nèi)部用來(lái)表示漢字的編碼稱(chēng)為漢字機(jī)內(nèi)碼。我國(guó)現(xiàn)在計(jì)算機(jī)系統(tǒng)中所采用的機(jī)內(nèi)碼是以國(guó)標(biāo)碼為基礎(chǔ)的編碼。機(jī)內(nèi)碼也是用連續(xù)的兩個(gè)字節(jié)來(lái)表示,將漢字國(guó)標(biāo)碼編碼的每個(gè)字節(jié)的最高位置1。既和國(guó)標(biāo)碼有緊密聯(lián)系,又和ASCII碼嚴(yán)格相區(qū)別,不會(huì)發(fā)生混淆。02漢字機(jī)內(nèi)碼漢字機(jī)內(nèi)碼與國(guó)標(biāo)碼的關(guān)系為:國(guó)標(biāo)碼高位字節(jié)80H漢字機(jī)內(nèi)碼高位字節(jié)國(guó)標(biāo)碼低位字節(jié)80H漢字機(jī)內(nèi)碼低位字節(jié)漢字輸入碼是指直接從鍵盤(pán)輸入的各種漢字輸入方法的編碼,屬于外碼。漢字輸入碼有數(shù)字碼、音碼和形碼,還有以漢字的音和形相結(jié)合的音形碼和形音碼。03漢字輸入碼字模碼是用點(diǎn)陣表示的漢字字形代碼,是漢字的輸出形式。根據(jù)漢字輸出的要求不同,點(diǎn)陣的多少也不同。簡(jiǎn)易型漢字為16×16點(diǎn)陣,提高型漢字為24×24點(diǎn)陣、32×32點(diǎn)陣,甚至更高。因此,字模點(diǎn)陣的信息量是很大的,所占存儲(chǔ)空間也很大。04漢字字模碼以16×16點(diǎn)陣為例,每個(gè)漢字要占用32個(gè)字節(jié),國(guó)標(biāo)兩級(jí)漢字要占用256千字節(jié)。因此,字模點(diǎn)陣只能用來(lái)構(gòu)成漢字庫(kù),而不能用于機(jī)內(nèi)存儲(chǔ)。字庫(kù)中存儲(chǔ)了每個(gè)漢字的點(diǎn)陣代碼,當(dāng)顯示輸出或打印輸出時(shí)才檢索字庫(kù),輸出字模點(diǎn)陣,得到字形。例如,“華”字的16×16點(diǎn)陣字形如圖所示。2.1.5校驗(yàn)碼校驗(yàn)碼是指能夠發(fā)現(xiàn)或自動(dòng)糾正錯(cuò)誤的數(shù)據(jù)編碼,也稱(chēng)為檢錯(cuò)/糾錯(cuò)編碼。校驗(yàn)碼的原理是通過(guò)增加一些冗余碼,來(lái)檢驗(yàn)或糾錯(cuò)編碼。奇偶校驗(yàn)是最簡(jiǎn)單的校驗(yàn)方法,其編碼方法為:在n位有效信息位的最高位或最低位增加一位二進(jìn)制校驗(yàn)位P,使其形成n+1位校驗(yàn)碼。校驗(yàn)碼中1的個(gè)數(shù)為奇數(shù)(偶數(shù)),則稱(chēng)為奇校驗(yàn)(偶校驗(yàn))。01奇偶校驗(yàn)碼設(shè)n位有效信息位XnXn?1…X2X1,其后增加一位二進(jìn)制校驗(yàn)位P,那么P可定義為:

奇校驗(yàn)

(2-2)

偶校驗(yàn)

(2-3)例如,8位二進(jìn)制信息00101011,在其最低位增加一位二進(jìn)制校驗(yàn)位P,那么奇校驗(yàn)碼為001010111,偶校驗(yàn)碼為001010110。奇偶校驗(yàn)碼的校驗(yàn)方法:如果奇校驗(yàn)碼中1的個(gè)數(shù)為偶數(shù),或者偶校驗(yàn)碼中1的個(gè)數(shù)為奇數(shù),則表示編碼出錯(cuò)了。即校驗(yàn)方程為:

奇校驗(yàn)

(2-4)

偶校驗(yàn)

(2-5)如果E=0,表示編碼正確;如果E=1,則表示編碼出錯(cuò)。海明碼是由RichardHamming于1950年提出的一種碼制,是一種糾錯(cuò)碼。是由數(shù)據(jù)與校驗(yàn)位組合而成的,其組合規(guī)則為:將數(shù)據(jù)與校驗(yàn)位(奇偶校驗(yàn))自左向右進(jìn)行編碼,其中編號(hào)為2的冪的位均為校驗(yàn)位,其余為數(shù)據(jù)位,如圖所示。02海明校驗(yàn)碼編號(hào)R1R2dR3dddR4ddd1(20)2(21)34(22)5678(23)91011采用二進(jìn)制數(shù)來(lái)表示海明碼每一位位置序號(hào)。例如,第1位用0001表示,第2位用0010表示,第3位用0011表示,以此類(lèi)推,得到所有位置序號(hào)的二進(jìn)制數(shù)。海明碼的每個(gè)校驗(yàn)位的值都是一組數(shù)據(jù)的奇偶校驗(yàn)位。校驗(yàn)位R1,R2,R3,R4分別是4組不同數(shù)據(jù)位的奇偶校驗(yàn)位:(1)校驗(yàn)位R1對(duì)位置序號(hào)二進(jìn)制數(shù)的最低位為1的位進(jìn)行校驗(yàn),即對(duì)第1,3,5,7,…位進(jìn)行校驗(yàn)。(2)校驗(yàn)位R2對(duì)位置序號(hào)二進(jìn)制數(shù)的次低位為1的位進(jìn)行校驗(yàn),即對(duì)第2,3,6,7,…位進(jìn)行校驗(yàn)。(2)校驗(yàn)位R3對(duì)位置序號(hào)二進(jìn)制數(shù)的倒數(shù)第三位為1的位進(jìn)行校驗(yàn),即對(duì)第4,5,6,7,…位進(jìn)行校驗(yàn)例2-9已知原信息為1001101,求其海明校驗(yàn)碼(校驗(yàn)位采用偶校驗(yàn))。解將數(shù)據(jù)位與校驗(yàn)位(偶校驗(yàn))自左向右進(jìn)行編碼,并將位置序號(hào)用二進(jìn)制數(shù)表示,如圖所示。R1R21R3001R4101000100100011010001010110011110001001101010111(20)2(21)34(22)5678(23)91011校驗(yàn)位R1是對(duì)第1,3,5,7,9,11這6位作偶校驗(yàn)得到,即R1=0;校驗(yàn)位R2是對(duì)第2,3,6,7,10,11這6位作偶校驗(yàn)得到,即R2=1;校驗(yàn)位R3是對(duì)第4,5,6,7這4位作偶校驗(yàn)得到,即R3=1;校驗(yàn)位R4是對(duì)第8,9,10,11這4位作偶校驗(yàn)得到,即R4=0。所以,最后得到海明校驗(yàn)碼為01110010101。海明碼檢錯(cuò)與糾錯(cuò)過(guò)程如下。(1)將出錯(cuò)計(jì)數(shù)器置為0。(2)依次對(duì)每個(gè)校驗(yàn)位進(jìn)行奇偶校驗(yàn),如果有錯(cuò),將校驗(yàn)位所對(duì)應(yīng)的位置序號(hào)值加入計(jì)數(shù)器中,直到所有校驗(yàn)位檢查完為止。(3)檢查出錯(cuò)計(jì)數(shù)器的值,如果為0,則數(shù)據(jù)傳輸無(wú)錯(cuò);如果不為0,則數(shù)據(jù)傳輸有錯(cuò),且出錯(cuò)計(jì)數(shù)器的值即為出錯(cuò)數(shù)據(jù)位的位置序號(hào)。(4)將出錯(cuò)數(shù)據(jù)位的數(shù)據(jù)取反即可。例2-10已知數(shù)據(jù)“11001100”的海明碼是“101110001100”(這里采用偶校驗(yàn)),若接收到的數(shù)據(jù)被改為“100110001100”,即第3位出錯(cuò),分析海明碼檢錯(cuò)與糾錯(cuò)過(guò)程。解按照上述海明碼檢錯(cuò)與糾錯(cuò)過(guò)程可得:依次對(duì)每個(gè)校驗(yàn)位與其所負(fù)責(zé)的數(shù)據(jù)位進(jìn)行偶校驗(yàn),此時(shí)出錯(cuò)計(jì)數(shù)器的值為3。首先將出錯(cuò)計(jì)數(shù)器置為0。由于其余校驗(yàn)位與第3位數(shù)據(jù)無(wú)關(guān),因此等所有的校驗(yàn)位檢驗(yàn)結(jié)束后,出錯(cuò)計(jì)數(shù)器的值仍為3,故可知海明碼的第3位數(shù)據(jù)出錯(cuò)。將第3位數(shù)據(jù)取反即可。循環(huán)冗余校驗(yàn)碼又稱(chēng)CRC碼(CyclicRedundancyCheck),簡(jiǎn)稱(chēng)循環(huán)碼。CRC碼檢錯(cuò)能力強(qiáng),且容易實(shí)現(xiàn),是目前使用最廣泛的檢錯(cuò)碼之一。CRC碼的編碼過(guò)程涉及二進(jìn)制多項(xiàng)式和模2運(yùn)算知識(shí)。例如,比特串B4B3B2B1B0的二進(jìn)制多項(xiàng)式形式是B4×x4+B3×x3+B2×x2+B1×x1+B0×x0,若比特串取值為10101110,則該比特串可被表示成二進(jìn)制多項(xiàng)式x7+x5+x3+x2+x。03循環(huán)冗余校驗(yàn)碼采用CRC碼校驗(yàn)時(shí),發(fā)送方和接收方須事先約定一個(gè)生成多項(xiàng)式G(x),并且G(x)的最高項(xiàng)和最低項(xiàng)的系數(shù)必須為1。CRC碼的編碼過(guò)程如下。相除:用移位后的式子模2除以生成多項(xiàng)式G(x)(也可看成二進(jìn)制數(shù)),得到的余數(shù)R(x)(r位)就是校驗(yàn)碼。移位:將原信息碼(k位)左移r位(k+r=n位),即在信息碼的末尾加上r個(gè)0,r為G(x)的最高次冪。構(gòu)成發(fā)送序列:將余數(shù)R(x)加到原信息碼后面即得到完整的CRC碼,構(gòu)成發(fā)送序列(n位)。接收端檢錯(cuò)過(guò)程如下。若余數(shù)為0,表示收到的編碼正確,編碼的后r位即為校驗(yàn)碼。設(shè)接收端收到的CRC碼多項(xiàng)式為T(mén)(x),將T(x)模2除以G(x)得到余數(shù)R(x)。若余數(shù)不為0,則表示收到的編碼錯(cuò)誤。例2-11設(shè)有二進(jìn)制數(shù)據(jù)11001011,采用的生成多項(xiàng)式G(x)=x4+x3+x+1,試求應(yīng)添加在二進(jìn)制數(shù)據(jù)后面的余數(shù),并給出該數(shù)據(jù)完整的CRC碼。解G(x)的二進(jìn)制形式為11011,其最高次冪為4。因此,首先在原數(shù)據(jù)后面添加4個(gè)0將其作為被除數(shù),然后用模2除以G(x),求得4位余數(shù)R(x),計(jì)算過(guò)程如圖所示。求得余數(shù)R(x)=0010,因此,該數(shù)據(jù)完整的CRC碼為110010110010。例2-12設(shè)生成多項(xiàng)式G(x)=x4+x3+1,接收方接收到的編碼字為1100111001,請(qǐng)問(wèn)收到的信息有錯(cuò)嗎?如沒(méi)錯(cuò),請(qǐng)還原原信息碼。解G(x)為11001,用收到的編碼1100111001模2除以G(x),得余數(shù)R(x)=0,因此收到的信息沒(méi)有錯(cuò)誤,計(jì)算過(guò)程如圖所示。G(x)的最高次冪為4,即r=4,因此,編碼的后4位為校驗(yàn)碼,去掉后4位后即為原信息碼:110011。2.1.6真值和機(jī)器數(shù)在計(jì)算機(jī)中,通常采用數(shù)的符號(hào)和數(shù)值一起編碼的方法來(lái)表示數(shù)據(jù)。常用的有原碼、反碼、補(bǔ)碼和移碼表示法。這幾種表示法都將數(shù)據(jù)的符號(hào)數(shù)字化,通常用0表示“正”,用1表示“負(fù)”,如0101表示+5。這種把符號(hào)“數(shù)字化”的數(shù)稱(chēng)為機(jī)器數(shù)。真值是機(jī)器數(shù)所代表的實(shí)際值。定點(diǎn)數(shù)的表示2.2在計(jì)算機(jī)中,小數(shù)點(diǎn)不用專(zhuān)門(mén)的器件表示,而是按約定的方式標(biāo)出。計(jì)算機(jī)中共有兩種方法約定小數(shù)點(diǎn)的存在,一種方法約定所有數(shù)據(jù)的小數(shù)點(diǎn)位置固定不變,即定點(diǎn)表示;另一種方法約定小數(shù)點(diǎn)的位置是可以浮動(dòng)的,即浮點(diǎn)表示。它們表示的數(shù)分別稱(chēng)為定點(diǎn)數(shù)和浮點(diǎn)數(shù)。2.2.1無(wú)符號(hào)數(shù)和有符號(hào)數(shù)的表示有符號(hào)數(shù)在計(jì)算機(jī)中將數(shù)的符號(hào)數(shù)碼化。一般規(guī)定二進(jìn)制的最高位為符號(hào)位,最高位為0表示該數(shù)為正數(shù),最高位為1表示該數(shù)為負(fù)數(shù)。根據(jù)符號(hào)位和數(shù)值位的編碼方法不同,有符號(hào)數(shù)的機(jī)器數(shù)可分為原碼、補(bǔ)碼、反碼和移碼等。無(wú)符號(hào)數(shù)機(jī)器字長(zhǎng)的全部位數(shù)均用來(lái)表示數(shù)值的大小,相當(dāng)于數(shù)的絕對(duì)值。對(duì)于字長(zhǎng)為n位的無(wú)符號(hào)數(shù)的表示范圍為0~2n?1。例如,機(jī)器字長(zhǎng)為8位,則數(shù)的表示范圍為00000000~11111111(0~255)。2.2.2機(jī)器數(shù)的定點(diǎn)表示01定點(diǎn)小數(shù)定點(diǎn)小數(shù)是純小數(shù),若約定小數(shù)點(diǎn)固定于機(jī)器數(shù)數(shù)值位的左邊,符號(hào)位的右邊,則機(jī)器數(shù)表示純小數(shù)。若數(shù)據(jù)X的形式為

,,其中,

為符號(hào)位,

是數(shù)值的有效部分,也稱(chēng)為尾數(shù),

為最高有效位,則定點(diǎn)小數(shù)的格式如圖所示。…

小數(shù)點(diǎn)位置(隱含)數(shù)值部分

符號(hào)位02定點(diǎn)整數(shù)定點(diǎn)整數(shù)是純整數(shù),若約定小數(shù)點(diǎn)固定于機(jī)器數(shù)最低位的右邊,則機(jī)器數(shù)表示純整數(shù)。若數(shù)據(jù)X的形式為

,其中,

為符號(hào)位,

~

是數(shù)值的有效部分,也稱(chēng)為尾數(shù),

為最低有效位,則定點(diǎn)整數(shù)的格式如圖所示?!?/p>

數(shù)值部分小數(shù)點(diǎn)位置(隱含)

符號(hào)位2.2.3數(shù)的機(jī)器碼表示01原碼表示法原碼是一種比較簡(jiǎn)單、直觀的機(jī)器數(shù)表示法,用機(jī)器數(shù)的最高位表示數(shù)的符號(hào),其余的各位表示數(shù)的絕對(duì)值。(1)當(dāng)X為純小數(shù)即

,原碼定義為:

例2-13求X的原碼[X]原,字長(zhǎng)為8位。①X=+0.1001②X=?0.1001解①X=+0.1001[X]原=0.1001000②X=?0.1001[X]原=1?X=1.1001000機(jī)器中實(shí)際保存時(shí)并不保存小數(shù)點(diǎn)。(2)當(dāng)X為純整數(shù)即

,則原碼定義為:例2-14求X的原碼[X]原,字長(zhǎng)為8位。①X=+1001②X=?1001解①X=+1001[X]原=00001001②X=?1001[X]原=27?X=10000000+1001=10001001原碼的特點(diǎn):原碼表示直觀、易懂,與真值的轉(zhuǎn)換容易;用原碼實(shí)現(xiàn)乘、除運(yùn)算的規(guī)則很簡(jiǎn)單,但實(shí)現(xiàn)加減運(yùn)算比較復(fù)雜。02補(bǔ)碼表示法原碼表示法的加減法操作比較復(fù)雜,對(duì)于兩個(gè)不同符號(hào)數(shù)的加法(或同符號(hào)數(shù)的減法),先要比較兩個(gè)數(shù)的絕對(duì)值大小,然后絕對(duì)值大的數(shù)減去絕對(duì)值小的數(shù),最后還要給結(jié)果選擇合適的符號(hào)。而補(bǔ)碼表示法中的加減法則可統(tǒng)一采用加法操作實(shí)現(xiàn)。補(bǔ)碼的編碼思路是利用模運(yùn)算中的補(bǔ)數(shù)來(lái)表示負(fù)數(shù)。模運(yùn)算系統(tǒng)中,模是指計(jì)量器的容量(計(jì)數(shù)范圍)。例如,大家所熟悉的鐘表,是以12為計(jì)數(shù)循環(huán)的,模M=12;一個(gè)4位的二進(jìn)制計(jì)數(shù)器,計(jì)數(shù)范圍為0~15,模M=16。運(yùn)算時(shí)只計(jì)量小于模的部分,其余部分被丟棄,這種運(yùn)算稱(chēng)為模運(yùn)算,或模M運(yùn)算。模運(yùn)算的典型特征是同余,同余是指兩個(gè)整數(shù)A和B除以同一正整數(shù)M,所得余數(shù)相同。這時(shí)稱(chēng)A和B對(duì)M同余,即A和B在以M為模時(shí)是相等的,可寫(xiě)成A=B(modM)。例如,鐘表中模M=12,故3點(diǎn)和15點(diǎn)、5點(diǎn)和17點(diǎn)是同余的,它們可以寫(xiě)作:3=15 (mod12)5=17 (mod12)(1)當(dāng)X為純小數(shù)即

,補(bǔ)碼定義為:

(mod2)例2-15求X的補(bǔ)碼[X]補(bǔ),字長(zhǎng)為8位。①X=+0.1001②X=?0.1001解①X=+0.1001[X]補(bǔ)=0.1001000②X=?0.1001[X]補(bǔ)=2+X=1.0111000機(jī)器中實(shí)際保存時(shí)并不保存小數(shù)點(diǎn)。(2)當(dāng)X為純整數(shù)即

,則補(bǔ)碼定義為:

(mod)例2-16求X的補(bǔ)碼[X]補(bǔ),字長(zhǎng)為8位。①X=+1101②X=?1101解①X=+1101[X]補(bǔ)=00001101②X=?1101[X]補(bǔ)=28+X=100000000?1101=11110011例2-17求X=?1101的補(bǔ)碼,字長(zhǎng)為8位。解根據(jù)上面的小技巧解題步驟如下:11110011

X=?1101X的真值?0001101111100101X的補(bǔ)碼最低位+1按位取反例2-18[X]補(bǔ)=11010101,求[?X]補(bǔ)。解[X]補(bǔ)=11010101,連符號(hào)位一起各位取反后為00101010,再在末尾加1后得00101011,即[?X]補(bǔ)=00101011。03反碼表示法反碼通常用來(lái)作為由原碼求補(bǔ)碼或者由補(bǔ)碼求原碼的中間過(guò)渡。由真值求反碼的規(guī)則如下。(1)符號(hào)位:0表示正號(hào)“+”,1表示負(fù)號(hào)“?”。(2)數(shù)值部分:正數(shù),數(shù)值部分與真值形式相同;

負(fù)數(shù),將真值的數(shù)值部分按位取反。例2-19求X的反碼[X]反,字長(zhǎng)為8位。①X=+0.1101 ②X=?0.1101③X=+1101 ④X=?1101解①X=+0.1101 [X]反=0.1101000②X=?0.1101 [X]反=1.0010111③X=+1101 [X]反=00001101④X=?1101 [X]反=1111001004移位表示法移碼常用來(lái)表示浮點(diǎn)數(shù)的階碼,它只能表示整數(shù)。設(shè)X為n位的二進(jìn)制數(shù),真值為

,純整數(shù)移碼的定義為:[X]移=2n+X?2nX<2n(其中機(jī)器字長(zhǎng)為n+1)移碼就是在真值的基礎(chǔ)上加一個(gè)常數(shù)(2n),這個(gè)常數(shù)稱(chēng)為偏移值,相當(dāng)于X在數(shù)軸上向正方向偏移了若干單位,如圖所示。02n2n+1?1?2n02n?1[X]移真值移碼表示法中,數(shù)的最高位(符號(hào)位):如果為0,表示該數(shù)為負(fù)數(shù);如果為1,表示該數(shù)為正數(shù)。例2-20求X的移碼[X]移,字長(zhǎng)為8位。①X=+1101 ②X=?1101解①X=+1101 [X]移=27+X=10000000+1101=10001101②X=?1101 [X]移=27+X=10000000?1101=01110011綜上所述,對(duì)于真值、原碼、補(bǔ)碼、反碼和移碼的轉(zhuǎn)換規(guī)律如圖所示。例2-21將十進(jìn)制真值?127,?1,0,+1,+127表示成二進(jìn)制數(shù)并求其原碼、反碼、補(bǔ)碼和移碼的值(字長(zhǎng)為8位)。解二進(jìn)制真值及其諸碼值列于表中,其中0在原碼和反碼中有兩種表示方式。十進(jìn)制真值二進(jìn)制真值原碼表示反碼表示補(bǔ)碼表示移碼表示?127?111111111111111100000001000000100000001?1?0000001100000011111111011111111011111110+000000000000000000000000000000010000000?00000001000000011111111+1+000000100000001000000010000000110000001+127+111111101111111011111110111111111111111浮點(diǎn)數(shù)的表示2.32.3.1浮點(diǎn)數(shù)的表示格式點(diǎn)數(shù)是指小數(shù)點(diǎn)位置可隨比例因子的不同而浮動(dòng)的數(shù)據(jù),通常以下式表示:N=M×REN浮點(diǎn)數(shù)M尾數(shù),用定點(diǎn)小數(shù)表示E階碼,用定點(diǎn)整數(shù)表示R“階的基數(shù)(底)”,為常數(shù),一般為2,8或16階碼和尾數(shù)可以采用原碼、補(bǔ)碼、反碼中任意一種編碼方法來(lái)表示。另外,階碼還可以采用移碼方式表示(通常采用移碼方式)。由上式可見(jiàn),浮點(diǎn)數(shù)由階碼和尾數(shù)兩部分組成,如圖所示。EsE(m位)MsM(n位)階符階碼數(shù)值數(shù)符尾數(shù)數(shù)值Es階碼的符號(hào)位,安排在最高位E階碼,緊跟階符位之后,占m位Ms尾數(shù)的符號(hào)位,在尾數(shù)之前的一位M尾數(shù),在低位部分,占n位2.3.2規(guī)格化浮點(diǎn)數(shù)用浮點(diǎn)表示法表示一個(gè)數(shù)時(shí),表示形式不唯一。例如:X=+0.01100101×2?101=+0.11001010×2?110=+0.001100101×2?100如果尾數(shù)M滿(mǎn)足|M|<1,則該浮點(diǎn)數(shù)為規(guī)格化浮點(diǎn)數(shù),否則稱(chēng)其為非規(guī)格化浮點(diǎn)數(shù)。例如,0.1101×210,?0.1101×210是規(guī)格化浮點(diǎn)數(shù);而0.0110×211,?0.0110×211是非規(guī)格化浮點(diǎn)數(shù)。例2-22將非規(guī)格化的浮點(diǎn)數(shù)N=0.0110×211規(guī)格化。解把浮點(diǎn)數(shù)N的尾數(shù)向左移一位(即尾數(shù)的小數(shù)點(diǎn)右移一位),變?yōu)?.1100,同時(shí),階碼遞減1,得到N=0.1100×210即為規(guī)格化浮點(diǎn)數(shù)。例2-23解將十進(jìn)制數(shù)

轉(zhuǎn)換成規(guī)格化浮點(diǎn)數(shù)表示。假設(shè)浮點(diǎn)數(shù)表示格式中,階碼占5位(包括階符位),尾數(shù)占11位(包括數(shù)符位),尾數(shù)用補(bǔ)碼表示,階碼用移碼表示。()10=()2=+0.1101×2?11。[+0.1101]補(bǔ)=0.1101000000,即尾數(shù)為01101000000;[?11]移=01101,即階碼為01101。因此,其浮點(diǎn)數(shù)為011010110100000。例2-24假設(shè)浮點(diǎn)數(shù)格式中,階碼占5位(包括階符位),尾數(shù)占8位(包括數(shù)符位),階碼用移碼表示,當(dāng)尾數(shù)用補(bǔ)碼表示時(shí),寫(xiě)出浮點(diǎn)數(shù)1110111101000B的規(guī)格化數(shù)。解依題意,尾數(shù)[M]補(bǔ)=11101000,即[M]原=10011000,即真值M=?0.0011000,則尾數(shù)左移2位后,M'=?0.1100000,[M']補(bǔ)=10100000。階碼[E]移=11101,左規(guī)后[E']移=11011。因此,規(guī)格化數(shù)為1101110100000B。2.3.3IEEE754標(biāo)準(zhǔn)按照IEEE754標(biāo)準(zhǔn),常用的浮點(diǎn)數(shù)格式如圖所示。SEM數(shù)符階碼,用移碼表示尾數(shù)數(shù)值位,用原碼表示(1)(2)單精度浮點(diǎn)數(shù)(32位),階碼8位,尾數(shù)24位(內(nèi)含1位符號(hào)位)。雙精度浮點(diǎn)數(shù)(64位),階碼11位,尾數(shù)53位(內(nèi)含1位符號(hào)位)。根據(jù)IEEE754國(guó)際標(biāo)準(zhǔn),常用的浮點(diǎn)數(shù)有兩種格式:由于IEEE754標(biāo)準(zhǔn)約定在小數(shù)點(diǎn)左部有一位隱含位,從而實(shí)際使得尾數(shù)的有效值變?yōu)?.M。例如,(13)10=(1101)2,將它規(guī)格化后結(jié)果為1.101×2011,其中整數(shù)部分的1將不存儲(chǔ)在23位尾數(shù)內(nèi)。以單精度浮點(diǎn)數(shù)為例,最高位為數(shù)符位;其后是8位階碼,以2為底,用移碼表示,移碼的偏置值為28?1=127;其后23位是原碼表示的尾數(shù)數(shù)值位。對(duì)于規(guī)格化的二進(jìn)制浮點(diǎn)數(shù),數(shù)值的最高位總是1,為了能使尾數(shù)多表示一位有效位,將這個(gè)1隱含,因此尾數(shù)數(shù)值實(shí)際上是24位。IEEE754標(biāo)準(zhǔn)中,規(guī)格化的單精度浮點(diǎn)數(shù)的真值為:N=(?1)S×1.M×2E?127規(guī)格化的雙精度浮點(diǎn)數(shù)的真值為:N=(?1)S×1.M×2E?1023下面以單精度浮點(diǎn)數(shù)為例,討論IEEE754標(biāo)準(zhǔn)對(duì)特殊數(shù)據(jù)的表示,具體如表所示。符號(hào)位S階碼E尾數(shù)M數(shù)值N0/10000/10≠0(?1)S×(0.M)×2E?1260/11~254≠0(?1)S×(1.M)×2E?1270/1255≠0NaN(非數(shù)值)0/12550(?1)S×∞(無(wú)窮大)例2-25將(20.59375)10轉(zhuǎn)換成IEEE754標(biāo)準(zhǔn)的32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式。解(20.59375)10=(10100.10011)2將尾數(shù)規(guī)范為1.M的形式:10100.10011=1.010010011×24,即指數(shù)e=4。可得:M=010010011,S=0,E=4+127=131=10000011。因此,32位浮點(diǎn)數(shù)的IEEE754標(biāo)準(zhǔn)格式為:01000001101001001100000000000000=(41A4C000)16。例2-26若浮點(diǎn)數(shù)IEEE754標(biāo)準(zhǔn)存儲(chǔ)格式為(41360000)16,求浮點(diǎn)數(shù)的十進(jìn)制數(shù)值。解(41360000)16=01000001001101100000000000000000即S=0,E=10000010,M=01101100000000000000000。因此,指數(shù)e=E?127=10000010?01111111=00

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論