微型計(jì)算機(jī)基礎(chǔ)_第1頁
微型計(jì)算機(jī)基礎(chǔ)_第2頁
微型計(jì)算機(jī)基礎(chǔ)_第3頁
微型計(jì)算機(jī)基礎(chǔ)_第4頁
微型計(jì)算機(jī)基礎(chǔ)_第5頁
已閱讀5頁,還剩119頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第1章微型計(jì)算機(jī)基礎(chǔ)1.1微型計(jì)算機(jī)概述1.2微型計(jì)算機(jī)系統(tǒng)1.3計(jì)算機(jī)中的數(shù)制及其轉(zhuǎn)換1.4計(jì)算機(jī)中數(shù)與字符的編碼習(xí)題11.1微型計(jì)算機(jī)概述1.1.1計(jì)算機(jī)的發(fā)展20世紀(jì)40年代,無線電技術(shù)和無線電工業(yè)的發(fā)展為電子計(jì)算機(jī)的研制準(zhǔn)備了物質(zhì)基礎(chǔ),1943年~1946年,美國賓夕法尼亞大學(xué)研制的ENIAC(ElectronicNumericalIntegratorAndComputer,電子數(shù)字積分器和計(jì)算機(jī))是世界上第一臺(tái)電子計(jì)算機(jī)。當(dāng)時(shí),第二次世界大戰(zhàn)正在進(jìn)行,為了完成新武器在彈道問題中許多復(fù)雜的計(jì)算,在美國陸軍部的資助下開展了這項(xiàng)研究工作,ENIAC計(jì)算機(jī)于1945年年底完成,1946年2月正式交付使用。因?yàn)镋NIAC計(jì)算機(jī)是最早問世的一臺(tái)電子數(shù)字計(jì)算機(jī),所以人們認(rèn)為它是現(xiàn)代計(jì)算機(jī)的始祖。ENIAC計(jì)算機(jī)共用18000多個(gè)電子管,1500個(gè)繼電器,重達(dá)30噸,占地170平方米,耗電140kW,每秒鐘能進(jìn)行5000次加法計(jì)算,領(lǐng)導(dǎo)研制的是賓夕法尼亞大學(xué)的莫克利(J.W.Mauchly)和??颂?J.P.Eckert)。該計(jì)算機(jī)存在兩個(gè)主要缺點(diǎn),一是存儲(chǔ)容量太小,只能存20個(gè)字長為10位的十進(jìn)制數(shù);二是用線路連接的方法來編排程序,因此每次解題都要依靠人工改接連線,準(zhǔn)備時(shí)間大大超過實(shí)際計(jì)算時(shí)間。在研制ENIAC計(jì)算機(jī)的同時(shí),馮·諾依曼(VonNeumann)與莫爾小組合作研制了EDVAC計(jì)算機(jī),該計(jì)算機(jī)采用了存儲(chǔ)程序方案,其后開發(fā)的計(jì)算機(jī)都采用這種方式,稱為馮·諾依曼計(jì)算機(jī)。馮·諾依曼計(jì)算機(jī)具有如下基本特點(diǎn):(1)計(jì)算機(jī)由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備五部分組成。(2)采用存儲(chǔ)程序的方式,程序和數(shù)據(jù)放在同一個(gè)存儲(chǔ)器中,指令和數(shù)據(jù)一樣可以送到運(yùn)算器中運(yùn)算,即由指令組成的程序是可以修改的。(3)數(shù)據(jù)以二進(jìn)制碼表示。(4)指令由操作碼和地址碼組成。(5)指令在存儲(chǔ)器中按執(zhí)行順序存放,由指令計(jì)數(shù)器(即程序計(jì)數(shù)器PC)指明要執(zhí)行的指令所在的單元地址,一般按順序遞增,也可按運(yùn)算結(jié)果或外界條件而改變。(6)機(jī)器以運(yùn)算器為中心,輸入/輸出設(shè)備與存儲(chǔ)器間的數(shù)據(jù)傳送都通過運(yùn)算器。馮·諾依曼計(jì)算機(jī)開辟了“存儲(chǔ)程序自動(dòng)控制”現(xiàn)代計(jì)算機(jī)的先河,目前的計(jì)算機(jī)基本是基于馮·諾依曼計(jì)算機(jī)的模型和原理研制的。根據(jù)電子計(jì)算機(jī)所采用的邏輯器件的發(fā)展,一般把電子計(jì)算機(jī)的發(fā)展分成四個(gè)階段,習(xí)慣上稱為四代,相鄰兩代計(jì)算機(jī)之間在時(shí)間上有一定的重疊。第一代:電子管計(jì)算機(jī)時(shí)代(從1946年第一臺(tái)計(jì)算機(jī)研制成功到20世紀(jì)50年代后期)。這一時(shí)期的計(jì)算機(jī)采用電子管作為基本器件。在這一時(shí)期,主要為軍事與國防尖端技術(shù)的需要而研制計(jì)算機(jī),其研究成果逐步擴(kuò)展到民用,并轉(zhuǎn)為工業(yè)產(chǎn)品,形成了計(jì)算機(jī)工業(yè)。第二代:晶體管計(jì)算機(jī)時(shí)代(從20世紀(jì)50年代中期到60年代后期)。這一時(shí)期計(jì)算機(jī)的主要器件逐步由電子管改為晶體管,因而縮小了體積,降低了功耗,提高了速度和可靠性,而且價(jià)格不斷下降。后來又采用了磁心存儲(chǔ)器,使速度得到進(jìn)一步提高。不僅使計(jì)算機(jī)在軍事與尖端技術(shù)上的應(yīng)用范圍進(jìn)一步擴(kuò)大,而且在氣象、工程設(shè)計(jì)、數(shù)據(jù)處理以及其他科學(xué)研究等領(lǐng)域內(nèi)也應(yīng)用起來。在這一時(shí)期開始重視計(jì)算機(jī)產(chǎn)品的繼承性,形成了適應(yīng)一定應(yīng)用范圍的計(jì)算機(jī)“族”,這是系列化思想的萌芽,從而縮短了新機(jī)器的研制周期,降低了生產(chǎn)成本,實(shí)現(xiàn)了程序兼容,方便了新機(jī)器的使用。第三代:集成電路計(jì)算機(jī)時(shí)代(從20世紀(jì)60年代中期到70年代前期)。這一時(shí)期的計(jì)算機(jī)采用集成電路作為基本器件,因此功耗、體積、價(jià)格等進(jìn)一步下降,而速度及可靠性相應(yīng)地提高,使計(jì)算機(jī)的應(yīng)用范圍進(jìn)一步擴(kuò)大。正是由于集成電路成本的迅速下降,產(chǎn)生了成本低而功能不是太強(qiáng)的小型計(jì)算機(jī)供應(yīng)市場,占領(lǐng)了許多數(shù)據(jù)處理的應(yīng)用領(lǐng)域。第四代:大規(guī)模集成電路計(jì)算機(jī)時(shí)代。20世紀(jì)70年代初,半導(dǎo)體存儲(chǔ)器問世,迅速取代了磁芯存儲(chǔ)器,并不斷向大容量、高速度發(fā)展。此后,存儲(chǔ)器芯片集成度大體上每三年翻兩番(1971年每片1Kb,到1984年達(dá)到每片256Kb,1992年16Mb動(dòng)態(tài)隨機(jī)存儲(chǔ)器芯片上市),這就是著名的摩爾定律,從1971年內(nèi)含2300個(gè)晶體管的Intel4004芯片問世,到1999年包含了750萬個(gè)晶體管的PentiumⅡ處理器,都證實(shí)了摩爾定律的正確性。后來摩爾定律用來描述微處理器的工作速度,在一定成本下,大體上也是每18個(gè)月翻一番。專家預(yù)計(jì),芯片性能呈指數(shù)增長將在今后幾年放緩,有關(guān)人士認(rèn)為摩爾定律能再適用10年左右。自從1981年IBM公司推出了第一代16位微型計(jì)算機(jī)(IBM-PC)以來,微機(jī)的生產(chǎn)和應(yīng)用得到了迅速的發(fā)展。目前,以Pentium(奔騰)微處理器為標(biāo)志的微型計(jì)算機(jī)已廣泛地應(yīng)用于生產(chǎn)、經(jīng)營、管理和辦公自動(dòng)化等各個(gè)方面。1.1.2微型計(jì)算機(jī)的特點(diǎn)微型計(jì)算機(jī)與其他類型計(jì)算機(jī)相比具有如下特點(diǎn):(1)功能強(qiáng)。微型計(jì)算機(jī)的設(shè)計(jì)參考了其他類型計(jì)算機(jī)的優(yōu)點(diǎn),它的運(yùn)算速度快、計(jì)算精度高,具有記憶功能和邏輯判斷能力,而且每種微處理器都配有一整套支持相應(yīng)微型計(jì)算機(jī)工作的軟件。硬件和軟件的配合相輔相成,使微型計(jì)算機(jī)的功能大大增強(qiáng),適合各行各業(yè)不同的應(yīng)用。(2)可靠性高。由于在微處理器及其配套系列芯片上可做出幾千、幾萬甚至幾千萬個(gè)元件,這就減少了大量的焊點(diǎn)、連線、接插件等不可靠因素,使可靠性大大增加。據(jù)某些資料估計(jì),芯片集成度增加100倍,系統(tǒng)的可靠性也可增加100倍。目前,微處理器及其系列芯片的平均無故障時(shí)間可達(dá)107~108小時(shí)。(3)價(jià)格低。微處理器及其配套系列芯片采用集成電路工藝,集成度高,適合工廠大批量生產(chǎn),因此,產(chǎn)品造價(jià)十分低廉。據(jù)報(bào)道認(rèn)為,集成度增加100倍其價(jià)格也可降為同功能分立元件的百分之一。很顯然,低價(jià)格對(duì)于微型計(jì)算機(jī)的推廣和普及是極為有利的。(4)適應(yīng)性強(qiáng)。在微型計(jì)算機(jī)中,硬件擴(kuò)展是很方便的,而且系統(tǒng)的軟件是很容易改變的。因此,在相同的配置情況下,只要對(duì)硬件和軟件稍作某些變動(dòng),就能適應(yīng)不同用戶的要求。(5)周期短,見效快。微處理器制造廠家除生產(chǎn)微處器芯片外,還生產(chǎn)各種配套的支持芯片,同時(shí)也提供許多有關(guān)的支持軟件,這就為構(gòu)成一個(gè)微型計(jì)算機(jī)應(yīng)用系統(tǒng)創(chuàng)造了十分有利的條件。從而可節(jié)省研制時(shí)間,縮短研制周期,使研制的系統(tǒng)很快地投入運(yùn)行,取得明顯的經(jīng)濟(jì)效益。(6)體積小,重量輕,耗電省。微處理器及其配套支持芯片的尺寸均較小,最大也不過幾百平方毫米。另外,近幾年在微型計(jì)算機(jī)中還大量地采用了ASIC(大規(guī)模集成專用芯片)和GAL(通用可編程門陣列)器件,使得微型計(jì)算機(jī)的體積明顯縮小。(7)維護(hù)方便?,F(xiàn)在用微處器及其系列產(chǎn)品所構(gòu)成的微型計(jì)算機(jī)已逐漸趨于標(biāo)準(zhǔn)化、模塊化和系列化,從硬件結(jié)構(gòu)到軟件配置都作了較全面的考慮。一方面,微機(jī)一般都可用自檢診斷及測試發(fā)現(xiàn)系統(tǒng)故障;另一方面,發(fā)現(xiàn)故障以后,排除故障也比較容易。例如,迅速更換標(biāo)準(zhǔn)化模塊或芯片。1.1.3微型計(jì)算機(jī)的指標(biāo)1.字長微機(jī)的字長是指微處理器內(nèi)部一次可以并行處理二進(jìn)制代碼的位數(shù)。它與微處理器內(nèi)部寄存器以及CPU內(nèi)部數(shù)據(jù)總線寬度是一致的,字長越長,所表示的數(shù)據(jù)精度就越高。在完成同樣精度的運(yùn)算時(shí),字長較長的微處理器比字長較短的微處理器運(yùn)算速度快。大多數(shù)微處理器內(nèi)部的數(shù)據(jù)總線與微處理器的外部數(shù)據(jù)引腳寬度是相同的,但也有少數(shù)例外,如Intel8088微處理器內(nèi)部數(shù)據(jù)總線為16位,而芯片外部數(shù)據(jù)引腳只有8位,Intel80386SX微處理器內(nèi)部為32位數(shù)據(jù)總線,而外部數(shù)據(jù)引腳為16位。對(duì)這類芯片仍然以它們的內(nèi)部數(shù)據(jù)總線寬度為字長,但把它們稱作“準(zhǔn)××位”芯片。例如,8088被稱為“準(zhǔn)16位”微處理器芯片,80386SX被稱作“準(zhǔn)32位”微處理器芯片。

2.存儲(chǔ)容量存儲(chǔ)容量是衡量微機(jī)內(nèi)部存儲(chǔ)器能存儲(chǔ)二進(jìn)制信息量大小的一個(gè)技術(shù)指標(biāo)。通常把8位二進(jìn)制代碼稱為一個(gè)字節(jié)(Byte),16位二進(jìn)制代碼稱為一個(gè)字(Word),把32位二進(jìn)制代碼稱為一個(gè)雙字(DWord)。存儲(chǔ)器容量一般以字節(jié)為最基本的計(jì)量單位。一個(gè)字節(jié)記為1B,1024個(gè)字節(jié)記為1KB,1024KB記為1MB,1024MB記為1GB,而1024GB記為1TB。

3.指令執(zhí)行時(shí)間指令執(zhí)行時(shí)間是指計(jì)算機(jī)執(zhí)行一條指令所需的平均時(shí)間,其長短反映了計(jì)算機(jī)執(zhí)行一條指令運(yùn)行速度的快慢。它一方面決定于微處理器工作時(shí)鐘頻率,另一方面又取決于計(jì)算機(jī)指令系統(tǒng)的設(shè)計(jì)、CPU的體系結(jié)構(gòu)等。微處理器工作時(shí)鐘頻率指標(biāo)可表示為多少兆赫茲,即MHz;微處理器指令執(zhí)行速度指標(biāo)則表示為每秒運(yùn)行多少百萬條指令(MIPS,MillionsofInstructionsPerSecond)。

4.系統(tǒng)總線系統(tǒng)總線是連接微機(jī)系統(tǒng)各功能部件的公共數(shù)據(jù)通道,其性能直接關(guān)系到微機(jī)系統(tǒng)的整體性能。系統(tǒng)總線的性能主要表現(xiàn)為它所支持的數(shù)據(jù)傳送位數(shù)和總線工作時(shí)鐘頻率。數(shù)據(jù)傳送位數(shù)越寬,總線工作時(shí)鐘頻率越高,則系統(tǒng)總線的信息吞吐率就越高,微機(jī)系統(tǒng)的性能就越強(qiáng)。目前,微機(jī)系統(tǒng)采用了多種系統(tǒng)總線標(biāo)準(zhǔn),如ISA、EISA、VESA、PCI等。

5.外部設(shè)備配置在微機(jī)系統(tǒng)中,外部設(shè)備占據(jù)了重要的地位。計(jì)算機(jī)信息輸入、輸出、存儲(chǔ)都必須由外設(shè)來完成,微機(jī)系統(tǒng)一般都配置了顯示器、打印機(jī)、網(wǎng)卡等外設(shè)。微機(jī)系統(tǒng)所配置的外設(shè),其速度快慢、容量大小、分辨率高低等技術(shù)指標(biāo)都影響著微機(jī)系統(tǒng)的整體性能。

6.系統(tǒng)軟件配置系統(tǒng)軟件也是計(jì)算機(jī)系統(tǒng)不可缺少的組成部分。微機(jī)硬件系統(tǒng)僅是一個(gè)裸機(jī),它本身并不能運(yùn)行,若要運(yùn)行,必須有基本的系統(tǒng)軟件支持,如DOS、Windows等操作系統(tǒng)。系統(tǒng)軟件配置是否齊全,軟件功能的強(qiáng)弱,是否支持多任務(wù)、多用戶操作等都是微機(jī)硬件系統(tǒng)性能能否得到充分發(fā)揮的重要因素。1.1.4微型計(jì)算機(jī)的分類微型計(jì)算機(jī)的品種繁多,系列各異,最常見的有以下幾種分類方法。

1.按微處理器的位數(shù)分類按微處理器的位數(shù)分為4位機(jī)、8位機(jī)、16位機(jī)、32位機(jī)、64位機(jī),即分別以4位、8位、16位、32位、64位處理器為核心組成的微型計(jì)算機(jī)。

2.按微型計(jì)算機(jī)的用途分類按微型計(jì)算機(jī)的用途分為通用機(jī)和專用機(jī)兩類。

3.按微型計(jì)算機(jī)的檔次分類按微型計(jì)算機(jī)的檔次可分為低檔機(jī)、中檔機(jī)和高檔機(jī)。計(jì)算機(jī)的核心部件是它的微處理器,也可以根據(jù)所使用的微處理器檔次將微型計(jì)算機(jī)分為8086機(jī)、286機(jī)、386機(jī)、486機(jī)、586(Pentium)機(jī)、PentiumⅡ機(jī)、PentiumⅢ機(jī)和Pentium4機(jī)等。

4.按微型計(jì)算機(jī)的組裝形式和系統(tǒng)規(guī)模分類按微型計(jì)算機(jī)的組裝形式和系統(tǒng)規(guī)??煞譃閱纹瑱C(jī)、單板機(jī)、個(gè)人計(jì)算機(jī)。單片機(jī)是將微型計(jì)算機(jī)的主要部件:微處理器、存儲(chǔ)器、輸入/輸出接口等集成在一片大規(guī)模集成電路芯片上形成的微型計(jì)算機(jī),它具有完整的微型計(jì)算機(jī)功能。單片機(jī)具有體積小、可靠性高、成本低等特點(diǎn),廣泛應(yīng)用于智能儀器、儀表、家用電器、工業(yè)控制等領(lǐng)域。單板機(jī)是將微處理器、存儲(chǔ)器、輸入/輸出接口、簡單外設(shè)等部件安裝在一塊印刷電路板上形成的微型計(jì)算機(jī)。單板機(jī)具有結(jié)構(gòu)緊湊、使用簡單、成本低等特點(diǎn),常常應(yīng)用于工業(yè)控制和實(shí)驗(yàn)教學(xué)等領(lǐng)域。個(gè)人計(jì)算機(jī)也就是人們常說的PC機(jī),它是將一塊主機(jī)板(包括微處理器、內(nèi)存儲(chǔ)器、輸入/輸出接口等芯片)和若干接口卡、外部存儲(chǔ)器、電源等部件組裝在一個(gè)機(jī)箱內(nèi),并配置顯示器、鍵盤、鼠標(biāo)等外部設(shè)備和系統(tǒng)軟件構(gòu)成的微型計(jì)算機(jī)系統(tǒng)。PC機(jī)具有功能強(qiáng)、配置靈活、軟件豐富、使用方便等特點(diǎn),是最普及、應(yīng)用最廣泛的微型計(jì)算機(jī)。1.2微型計(jì)算機(jī)系統(tǒng)1.2.1微型計(jì)算機(jī)微型計(jì)算機(jī)是以微處理器芯片為核心,配以存儲(chǔ)器、I/O接口、輸入/輸出設(shè)備以及相應(yīng)的輔助電路而構(gòu)成的裸機(jī),簡稱微機(jī)。從結(jié)構(gòu)上講,它以微處理器為中心,通過總線把I/O設(shè)備、存儲(chǔ)器等連接成一個(gè)整體。根據(jù)總線使用方法的不同,微型計(jì)算機(jī)可以有不同的組織方式。圖1.1給出了微型計(jì)算機(jī)組成框圖。圖1.1計(jì)算機(jī)硬件系統(tǒng)組成

1.運(yùn)算器運(yùn)算器是對(duì)數(shù)據(jù)信息進(jìn)行加工處理的部件,它主要由算術(shù)邏輯運(yùn)算單元(ALU)組成,在控制器的指揮下可以完成各種算術(shù)運(yùn)算、邏輯運(yùn)算和其他操作。

2.控制器控制器是統(tǒng)一指揮和有效控制計(jì)算機(jī)各部件協(xié)調(diào)工作的關(guān)鍵部件,是微型計(jì)算機(jī)的指揮控制神經(jīng)中樞。它從存儲(chǔ)器中逐條地取出指令、分析指令,并向各部件發(fā)出相應(yīng)的控制信號(hào),使它們一步步地執(zhí)行指令所規(guī)定的操作。另一方面,它又接收運(yùn)算器、存儲(chǔ)器以及輸入/輸出設(shè)備的反饋信息,以確定程序的執(zhí)行順序。

3.存儲(chǔ)器存儲(chǔ)器是存放程序和數(shù)據(jù)的部件,它是一個(gè)記憶裝置,是計(jì)算機(jī)能夠?qū)崿F(xiàn)存儲(chǔ)程序工作原理的基礎(chǔ),存儲(chǔ)器分為主存儲(chǔ)器和輔助存儲(chǔ)器。主存儲(chǔ)器又稱內(nèi)存,通常由半導(dǎo)體存儲(chǔ)器組成。它可由CPU直接訪問,存取速度較快,但容量不大,一般用來存放當(dāng)前運(yùn)行的程序和數(shù)據(jù)。輔助存儲(chǔ)器又稱為外存,通常由磁盤與光盤組成。它由CPU通過I/O接口進(jìn)行訪問,存取速度較慢,但容量大,一般用來存放歷史數(shù)據(jù)與軟件。

4.輸入/輸出設(shè)備

輸入/輸出(I/O)設(shè)備又稱外設(shè),通過I/O接口與CPU相連,它是計(jì)算機(jī)與外部世界聯(lián)系的橋梁。(1)輸入設(shè)備用于把數(shù)字、字符、圖形、圖像和聲音等轉(zhuǎn)換成計(jì)算機(jī)能識(shí)別和接受的信息表示方式,如電信號(hào)、二進(jìn)制編碼等,然后把它們放入存儲(chǔ)器中。典型的輸入設(shè)備有鍵盤、鼠標(biāo)、掃描儀、光學(xué)字符識(shí)別設(shè)備(OCR)、模/數(shù)(A/D)轉(zhuǎn)換裝置以及其他聲像輸入設(shè)備等。(2)輸出設(shè)備把計(jì)算機(jī)處理信息的結(jié)果轉(zhuǎn)換成人們習(xí)慣接受的形式(如字符、曲線、圖像、表格和聲音等)送出,或變換成與其他設(shè)備相匹配的信號(hào)形式輸出。常見的輸出設(shè)備有顯示器、打印機(jī)、繪圖儀和數(shù)/模(D/A)轉(zhuǎn)換裝置等。計(jì)算機(jī)硬件的五大部件是通過總線連接起來的,所謂總線是一組公共信號(hào)線,它能分時(shí)地發(fā)送和接收各部件的信息。1.2.2微型計(jì)算機(jī)系統(tǒng)微型計(jì)算機(jī)的硬件系統(tǒng)稱為裸機(jī),裸機(jī)不能做任何事情。裸機(jī)配上系統(tǒng)軟件,加上電源和合適的外部設(shè)備,就構(gòu)成了一個(gè)可以使用的微型計(jì)算機(jī)系統(tǒng)。這里的系統(tǒng)軟件是指用來實(shí)現(xiàn)對(duì)計(jì)算機(jī)資源進(jìn)行管理,便于人們使用計(jì)算機(jī)而配置的軟件。由此可見,微型計(jì)算機(jī)系統(tǒng)由作為裸機(jī)的硬件系統(tǒng)和用來管理計(jì)算機(jī)資源的軟件系統(tǒng)兩大部分組成。其中,硬件是構(gòu)成計(jì)算機(jī)系統(tǒng)的物理實(shí)體或物理裝置。例如,微處理器、存儲(chǔ)器、主板、機(jī)箱、鍵盤、顯示器和打印機(jī)等。軟件是指為運(yùn)行、維護(hù)、管理和應(yīng)用計(jì)算機(jī)所編制的所有程序的集合。軟件一般分為系統(tǒng)軟件和應(yīng)用軟件兩大類,如圖1.2所示。圖1.2軟件系統(tǒng)的分類系統(tǒng)軟件是指管理、控制和維護(hù)計(jì)算機(jī)的各種資源,以及擴(kuò)大計(jì)算機(jī)功能和方便用戶使用計(jì)算機(jī)的各種程序集合。它是構(gòu)成計(jì)算機(jī)系統(tǒng)必備的軟件,通常又分為操作系統(tǒng)、語言處理程序、工具軟件和數(shù)據(jù)庫管理系統(tǒng)四類。應(yīng)用軟件是為了解決各種實(shí)際問題而設(shè)計(jì)的計(jì)算機(jī)程序,通常由計(jì)算機(jī)用戶或?qū)iT的軟件公司開發(fā)?,F(xiàn)代計(jì)算機(jī)硬件和軟件之間的分界線并不十分明顯,軟件與硬件在邏輯上有著某種等價(jià)的意義。在一個(gè)計(jì)算機(jī)系統(tǒng)中,硬件與軟件之間的功能分配及相互配合是設(shè)計(jì)的關(guān)鍵性問題之一,通常需要綜合考慮價(jià)格、速度、存儲(chǔ)容量、靈活性、適應(yīng)性以及可靠性等諸多因素。1.3計(jì)算機(jī)中的數(shù)制及其轉(zhuǎn)換計(jì)算機(jī)內(nèi)部的信息分為兩大類:控制信息和數(shù)據(jù)信息??刂菩畔⑹且幌盗械目刂泼?,用于指揮計(jì)算機(jī)如何操作;數(shù)據(jù)信息是計(jì)算機(jī)操作的對(duì)象,一般又可分為數(shù)值數(shù)據(jù)和非數(shù)值數(shù)據(jù)。數(shù)值數(shù)據(jù)用于表示數(shù)量的大小,它有確定的數(shù)值;非數(shù)值數(shù)據(jù)沒有確定的數(shù)值,它主要包括字符、漢字、邏輯數(shù)據(jù)等等。對(duì)計(jì)算機(jī)而言,不論是控制命令還是數(shù)據(jù)信息,它們都要用“0”和“1”兩個(gè)基本符號(hào)(即基2碼)來編碼表示,這是由于以下三個(gè)原因:(1)基2碼在物理上最容易實(shí)現(xiàn)。例如,用“1”和“0”表示高、低兩個(gè)電位,或表示脈沖的有無,還可表示脈沖的正、負(fù)極性等等,可靠性都較高。(2)基2碼用來表示二進(jìn)制數(shù),其編碼、加減運(yùn)算規(guī)則簡單。(3)基2碼的兩個(gè)符號(hào)“1”和“0”正好與邏輯數(shù)據(jù)“真”與“假”相對(duì)應(yīng),為計(jì)算機(jī)實(shí)現(xiàn)邏輯運(yùn)算帶來了方便。因此,不論是什么信息,在輸入計(jì)算機(jī)內(nèi)部時(shí),都必須用基2碼編碼表示,以方便存儲(chǔ)、傳送和處理。1.3.1數(shù)與數(shù)制進(jìn)位計(jì)數(shù)制是一種計(jì)數(shù)的方法。在日常生活中,人們使用各種進(jìn)位計(jì)數(shù)制。例如,六十進(jìn)制(1小時(shí)=60分,1分=60秒),十二進(jìn)制(1英尺=12英寸,1年=12月)等。但最熟悉和最常用的是十進(jìn)制計(jì)數(shù)。如前所述,在計(jì)算機(jī)中使用的是二進(jìn)制計(jì)數(shù)。另外,為便于人們閱讀及書寫,常常還要用到八進(jìn)制計(jì)數(shù)及十六進(jìn)制計(jì)數(shù)來表示二進(jìn)制計(jì)數(shù)。十進(jìn)制數(shù)的特點(diǎn)是“逢十進(jìn)一,借一當(dāng)十”,需要用到的數(shù)字符號(hào)為10個(gè),分別是0~9。二進(jìn)制數(shù)的特點(diǎn)是“逢二進(jìn)一,借一當(dāng)二”,需要用到的數(shù)字符號(hào)為2個(gè),分別是0、1。八進(jìn)制數(shù)的特點(diǎn)是“逢八進(jìn)一,借一當(dāng)八”,需要用到的數(shù)字符號(hào)為8個(gè),分別是0~7。十六進(jìn)制數(shù)的特點(diǎn)是“逢十六進(jìn)一,借一當(dāng)十六”,需要用到的數(shù)字符號(hào)為16個(gè),分別是0~9、A~F。任意一個(gè)十進(jìn)制數(shù)可以用位權(quán)表示,位權(quán)就是某個(gè)固定位置上的計(jì)數(shù)單位。在十進(jìn)制數(shù)中,個(gè)位的位權(quán)為100,十位的位權(quán)為101,百位的位權(quán)為102,千位的位權(quán)為103,而在小數(shù)點(diǎn)后第一位上的位權(quán)為10-1,小數(shù)點(diǎn)后第二位的位權(quán)為10-2等等。因此,如果有十進(jìn)制數(shù)234.13,則百位上的2表示兩個(gè)100,十位上的3表示三個(gè)10,個(gè)位上的4表示四個(gè)1,小數(shù)點(diǎn)后第一位上的1表示一個(gè)0.1,小數(shù)點(diǎn)后第二位上的3表示三個(gè)0.01,用位權(quán)表示為(234.13)10=2×102+3×101+4×100+1×10-1+3×10-2同理,任意一個(gè)二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)也可用位權(quán)表示。例如:(101.11)2=1×22+0×21+1×20+1×2-1+1×2-2(124.36)8=1×82+2×81+4×80+3×8-1+6×8-2(AC.B5)16=A×161+C×160+B×16-1+5×16-2

根據(jù)上述概念,可推廣出表示任意進(jìn)制數(shù)的通式:其中為整數(shù)部分,為小數(shù)部分,r為基數(shù)。每一項(xiàng)的數(shù)字可用0~r-1數(shù)字中的一個(gè)數(shù)字來表示。1.3.2不同數(shù)制之間的轉(zhuǎn)換1.十進(jìn)制數(shù)與二進(jìn)制數(shù)之間的轉(zhuǎn)換1)十進(jìn)制整數(shù)轉(zhuǎn)換成二進(jìn)制整數(shù)

方法:除2取余法。具體做法:將十進(jìn)制數(shù)除以2,得到一個(gè)商和一個(gè)余數(shù);再將商除以2,又得到一個(gè)商和一個(gè)余數(shù);繼續(xù)這一過程,直到商等于0為止。每次得到的余數(shù)(必定是0或1)就是對(duì)應(yīng)的二進(jìn)制數(shù)的各位數(shù)字。注意:第一次得到的余數(shù)為二進(jìn)制數(shù)的最低位,最后得到的余數(shù)為二進(jìn)制數(shù)的最高位?!纠?-1】將十進(jìn)制數(shù)97轉(zhuǎn)換成二進(jìn)制數(shù)。其過程如下:最后結(jié)果為(97)10=(A6A5A4A3A2A1A0)2=(1100001)22972482242122623210余數(shù)為1,余數(shù)為0,余數(shù)為0,余數(shù)為0,余數(shù)為0,余數(shù)為1,余數(shù)為1,余數(shù)為0,即A0=1即A1=0即A2=0即A3=0即A4=0即A5=1即A6=1結(jié)束2)十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制小數(shù)方法:乘2取整法。具體做法:用2乘以十進(jìn)制小數(shù),得到整數(shù)和小數(shù)部分;再用2乘以小數(shù)部分,又得到一個(gè)整數(shù)和一個(gè)小數(shù)部分;繼續(xù)這一過程,直到余下的小數(shù)部分為0或滿足精度要求為止;最后將每次得到的整數(shù)部分(必定是0或1)按先后順序從左到右排列,即得到所對(duì)應(yīng)的二進(jìn)制小數(shù)。【例1-2】將十進(jìn)制小數(shù)0.6875轉(zhuǎn)換成二進(jìn)制小數(shù)。其過程如下:0.6875× ?21.3750 整數(shù)部分為1,即A-1=10.3750 余下的小數(shù)部分×20.7500 整數(shù)部分為0,即A-2=00.7500 余下的小數(shù)部分×?21.5000 整數(shù)部分為1,即A-3=10.5000 余下的小數(shù)部分×?21.0000 整數(shù)部分為1,即A-4=10.0000 余下的小數(shù)部分為0,結(jié)束最后結(jié)果為(0.6875)10=(0.A-1A-2A-3A-4)2=(0.1011)2

為了將一個(gè)既有整數(shù)又有小數(shù)部分的十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),可以將其整數(shù)部分和小數(shù)部分分別進(jìn)行轉(zhuǎn)換,然后再組合起來。例如:(97)10=(1100001)2(0.6875)10=(0.1011)2由此可得:(97.6875)10=(1100001.1011)23)二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)方法:按位權(quán)展開后相加?!纠?-3】將二進(jìn)制數(shù)111.11轉(zhuǎn)換成十進(jìn)制數(shù)。其過程如下:(111.11)2=1×22+1×21+1×20+1×2-1+1×2-2 =4+2+1+0.5+0.25=(7.75)10

2.十進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換1)十進(jìn)制整數(shù)轉(zhuǎn)換成八進(jìn)制整數(shù)方法:除8取余法。具體做法:將十進(jìn)制數(shù)除以8,得到一個(gè)商和一個(gè)余數(shù);再將商除以8,又得到一個(gè)商和一個(gè)余數(shù);繼續(xù)這一過程,直到商等于0為止。每次得到的余數(shù)(必定是小于8的數(shù))就是對(duì)應(yīng)八進(jìn)制數(shù)的各位數(shù)字。第一次得到的余數(shù)為八進(jìn)制數(shù)的最低位,最后一次得到的余數(shù)為八進(jìn)制數(shù)的最高位?!纠?-4】將十進(jìn)制數(shù)97轉(zhuǎn)換成八進(jìn)制數(shù)。其過程如下:最后結(jié)果為(97)10=(A2A1A0)8=(141)8余數(shù)為1,余數(shù)為4,余數(shù)為1,即A0=1即A1=4即A2=1結(jié)束89781281商為0余數(shù)為0,2)十進(jìn)制小數(shù)轉(zhuǎn)換成八進(jìn)制小數(shù)

方法:乘8取整法。具體做法:用8乘以十進(jìn)制小數(shù),得到一個(gè)整數(shù)和一個(gè)小數(shù)部分;再用8乘以小數(shù)部分,又得到一個(gè)整數(shù)和一個(gè)小數(shù)部分;繼續(xù)這一過程,直到余下的小數(shù)部分為0或滿足精度要求為止;最后將每次得到的整數(shù)部分(必定是小于8的數(shù))按先后順序從左到右排列,即得到所對(duì)應(yīng)的二進(jìn)制小數(shù)?!纠?-5】將十進(jìn)制小數(shù)0.6875轉(zhuǎn)換成八進(jìn)制小數(shù)。其過程如下: 0.6875 ×8 5.5000 整數(shù)部分為5,即A-1=5 0.5000 余下的小數(shù)部分 ×8 4.0000 整數(shù)部分為4,即A-2=4 0.0000 余下的小數(shù)部分為0,結(jié)束最后結(jié)果為(0.6875)10=(0.A-1A-2)8=(0.54)8同理,一個(gè)八進(jìn)制數(shù)可分解成整數(shù)和小數(shù)部分,分別轉(zhuǎn)換后合成即可。3)八進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)方法:按位權(quán)展開后相加【例1-6】將八進(jìn)制數(shù)141.54轉(zhuǎn)換成十進(jìn)制數(shù)。其過程如下:(141.54)8=1×82+4×81+1×80+5×8-1+4×8-2 =64+32+1+0.625+0.0625 =97.6875最后結(jié)果為(141.54)8=(97.6875)10

3.十進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換1)十進(jìn)制整數(shù)轉(zhuǎn)換成十六進(jìn)制整數(shù)

方法:除16取余法。具體做法:將十進(jìn)制數(shù)除以16,得到一個(gè)商和一個(gè)余數(shù);再將商除以16,又得到一個(gè)商和一個(gè)余數(shù);繼續(xù)這一過程,直到商等于0為止。每次得到的余數(shù)(必定是小于F的數(shù))就是對(duì)應(yīng)十六進(jìn)制數(shù)的各位數(shù)字。第一次得到的余數(shù)為十六進(jìn)制數(shù)的最低位,最后一次得到的余數(shù)為十六進(jìn)制數(shù)的最高位?!纠?-7】將十進(jìn)制數(shù)97轉(zhuǎn)換成十六進(jìn)制數(shù)。其過程如下:最后結(jié)果為(97)10=(A2A1A0)16=(61)16余數(shù)為1,余數(shù)為6,即A0=1即A1=6結(jié)束1697166商為0余數(shù)為0,2)十進(jìn)制小數(shù)轉(zhuǎn)換成十六進(jìn)制小數(shù)方法:乘16取整法。具體做法:用16乘以十進(jìn)制小數(shù),得到一個(gè)整數(shù)和一個(gè)小數(shù)部分;再用16乘以小數(shù)部分,又得到一個(gè)整數(shù)和一個(gè)小數(shù)部分;繼續(xù)這一過程,直到余下的小數(shù)部分為0或滿足精度要求為止;最后將每次得到的整數(shù)部分(必定是小于F的數(shù))按先后順序從左到右排列,即得到所對(duì)應(yīng)的十六進(jìn)制小數(shù)?!纠?-8】將十進(jìn)制小數(shù)0.6875轉(zhuǎn)換成十六進(jìn)制小數(shù)。其過程如下:0.68751611.00000.0000整數(shù)部分為11,即A-1=B余下的小數(shù)部分為0,結(jié)束最后結(jié)果為(0.6875)10=(0.A-1)16=(0.B)163)十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)方法:按位權(quán)展開后相加?!纠?-9】將十六進(jìn)制數(shù)61.B轉(zhuǎn)換成十進(jìn)制數(shù)。其過程如下:(61.B)8 =6×161+1×160+B×16-1 =96+1+11×16-1 =97+0.6875 =97.6875最后結(jié)果為(61.B)16=(97.6875)10

4.二進(jìn)制與八進(jìn)制、十六進(jìn)制數(shù)之間的轉(zhuǎn)換因?yàn)?3=8,所以每三位二進(jìn)制數(shù)對(duì)應(yīng)一位八進(jìn)制數(shù);24=16,所以每四位二進(jìn)制數(shù)對(duì)應(yīng)一位十六進(jìn)制。表1-1列出了十進(jìn)制、二進(jìn)制、八進(jìn)制、十六進(jìn)制最基本數(shù)字的對(duì)應(yīng)關(guān)系,這些對(duì)應(yīng)關(guān)系在后面的二進(jìn)制、八進(jìn)制、十六進(jìn)制相互轉(zhuǎn)換中要經(jīng)常用到。1)二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)

方法:從小數(shù)點(diǎn)所在位置分別向左向右每三位一組進(jìn)行劃分。若小數(shù)點(diǎn)左側(cè)的位數(shù)不是3的整數(shù)倍,在數(shù)的最左側(cè)補(bǔ)零;若小數(shù)點(diǎn)右側(cè)的位數(shù)不是3的整數(shù)倍,在數(shù)的最右側(cè)補(bǔ)零。然后參照表1-1,將每三位二進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的一位八進(jìn)制數(shù),即為二進(jìn)制數(shù)對(duì)應(yīng)的八進(jìn)制數(shù)。表1-1十、二、八、十六進(jìn)制數(shù)碼的對(duì)應(yīng)關(guān)系十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F表1-1十、二、八、十六進(jìn)制數(shù)碼的對(duì)應(yīng)關(guān)系【例1-10】直接將二進(jìn)制數(shù)11110.11轉(zhuǎn)換成八進(jìn)制數(shù)。其過程如下:011 110 . 1103 6 . 6所以(11110.11)2=(36.6)82)八進(jìn)制數(shù)轉(zhuǎn)換二進(jìn)制數(shù)方法:參照表1-1,將每一位八進(jìn)制數(shù)分解成對(duì)應(yīng)的三位二進(jìn)制數(shù),即為八進(jìn)制數(shù)對(duì)應(yīng)的二進(jìn)制數(shù)?!纠?-11】直接將八進(jìn)制數(shù)35.6轉(zhuǎn)換成二進(jìn)制數(shù)。其過程如下:3 5 . 6011 101 . 110所以(35.6)8=(11101.11)2

3)二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)方法:從小數(shù)點(diǎn)所在位置分別向左向右每四位一組進(jìn)行劃分。若小數(shù)點(diǎn)左側(cè)的位數(shù)不是4的整數(shù)倍,在數(shù)的最左側(cè)補(bǔ)零;若小數(shù)點(diǎn)右側(cè)的位數(shù)不是4的整數(shù)倍,在數(shù)的最右側(cè)補(bǔ)零。然后參照表1-1,將每四位二進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的一位十六進(jìn)制數(shù),即為二進(jìn)制數(shù)對(duì)應(yīng)的十六進(jìn)制數(shù)?!纠?-12】直接將二進(jìn)制11110.11轉(zhuǎn)換成十六進(jìn)制數(shù)。其過程如下:0001 1110 . 11001 E . C所以(11110.11)2=(1E.C)164)十六進(jìn)制數(shù)轉(zhuǎn)換二進(jìn)制數(shù)方法:參照表1-1,將每一位十六進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的四位二進(jìn)制數(shù),即為十六進(jìn)制數(shù)對(duì)應(yīng)的二進(jìn)制數(shù)?!纠?-13】直接將十六進(jìn)制數(shù)EF.C轉(zhuǎn)換成二進(jìn)制數(shù)。其過程如下:

E F . C1110 1111 . 1100所以(EF.C)16=(11101111.11)2由以上方法可以看出,(25)10=(11001)2=(19)16=(31)8,(0.5)10=(0.1)2=(0.8)16=(0.4)8。在計(jì)算機(jī)里,通常用數(shù)字后面跟一個(gè)英文字母來表示該數(shù)的數(shù)制,十進(jìn)制數(shù)用D(Decimal)、二進(jìn)制數(shù)用B(Binary)、八進(jìn)制數(shù)用O(Octal)、十六進(jìn)制數(shù)用H(Hexadecimal)來表示。由于英文字母O容易和零誤會(huì),所以也可以用Q來表示八進(jìn)制數(shù)。另外,在計(jì)算機(jī)操作中一般默認(rèn)使用十進(jìn)制數(shù),所以十進(jìn)制數(shù)可以不標(biāo)進(jìn)制。例如,25D=1100B=19H=31Q,0.5D=0.1B=0.8H=0.4Q。當(dāng)然,也可以用這些字母的小寫形式來表示數(shù)制。例如:25d=1100b=19h=31q,0.5d=0.1b=0.8h=0.4q。本書約定采用大寫字母形式。八進(jìn)制數(shù)和十六進(jìn)制數(shù)主要用來簡化二進(jìn)制數(shù)的書寫,因?yàn)榫哂?3=8,24=16的關(guān)系,所以使用八進(jìn)制數(shù)和十六進(jìn)制數(shù)表示的二進(jìn)制數(shù)較短,便于記憶。IBM-PC機(jī)中主要使用十六進(jìn)制數(shù)表示二進(jìn)制數(shù)和編碼,所以必須十分熟悉二進(jìn)制數(shù)與十六進(jìn)制數(shù)的對(duì)應(yīng)關(guān)系。1.4計(jì)算機(jī)中數(shù)與字符的編碼1.4.1數(shù)值數(shù)據(jù)的編碼及其運(yùn)算1.二進(jìn)制數(shù)的編碼及運(yùn)算數(shù)據(jù)的正負(fù)號(hào)可以用一位二進(jìn)制的“0”和“1”兩個(gè)狀態(tài)來表示,這樣,二進(jìn)制數(shù)值數(shù)據(jù)在計(jì)算機(jī)中就能方便表示了。為了盡可能簡化對(duì)二進(jìn)制數(shù)值數(shù)據(jù)實(shí)現(xiàn)算術(shù)運(yùn)算所用到的規(guī)則,機(jī)器將二進(jìn)制數(shù)值數(shù)據(jù)進(jìn)行編碼表示,常用的編碼有原碼、反碼和補(bǔ)碼。由于補(bǔ)碼編碼有許多優(yōu)點(diǎn),因此大多數(shù)微機(jī)數(shù)字與字符采用補(bǔ)碼進(jìn)行編碼。為了討論方便,有必要引入兩個(gè)概念:機(jī)器數(shù)和機(jī)器數(shù)的真值(簡稱真值)。機(jī)器數(shù):帶符號(hào)的二進(jìn)制數(shù)值數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的編碼。真值:機(jī)器數(shù)所代表的實(shí)際值。一般機(jī)器數(shù)的最高有效位用來表示數(shù)的正負(fù)號(hào),“0”表示正數(shù),“1”表示負(fù)數(shù)。1)二進(jìn)制數(shù)原碼編碼方法原碼編碼的方法如下:設(shè)真值為X,機(jī)器字長為n位,則當(dāng)X≥0時(shí),[X]原的最高位填0,其余n-1位填X的各數(shù)值位的位值。例如,n=8時(shí),[+0]原=00000000,[+1]原=00000001,[+127]原=01111111。當(dāng)X≤0時(shí),[X]原的最高位填1,其余n-1位填X的各數(shù)值位的位值。例如,n=8時(shí),[-0]原=10000000,[-1]原=10000001,[-127]原=11111111。結(jié)論:二進(jìn)制正、負(fù)數(shù)的原碼就是符號(hào)化的機(jī)器數(shù)真值本身。注意:在原碼的表示中,真值0的原碼可表示為兩種不同的形式,+0和-0。原碼表示法的優(yōu)點(diǎn)是簡單易于理解,與真值間的轉(zhuǎn)換較為方便。它的缺點(diǎn)是進(jìn)行加減運(yùn)算時(shí)較麻煩,既要考慮是做加法還是做減法運(yùn)算,還要考慮數(shù)的符號(hào)和絕對(duì)值的大小。這不僅使運(yùn)算器的設(shè)計(jì)較為復(fù)雜,而且降低了運(yùn)算器的運(yùn)算速度。若有二進(jìn)制數(shù)X=Xn-1Xn-2…X1X0,則原碼表示法的定義為2n-1>X≥00≥X>-2n-12)二進(jìn)制數(shù)反碼編碼方法反碼編碼的方法如下:設(shè)真值為X,機(jī)器字長為n位,則當(dāng)X≥0時(shí),[X]反的最高位填0,其余n-1位填X的各數(shù)值位的位值,即采用符號(hào)—絕對(duì)值表示。例如,n=8時(shí),[+0]反=00000000,[+1]反=00000001,[+127]反=01111111。當(dāng)X≤0時(shí),[X]反=2n-1+X(MOD2n)。例如,n=8時(shí),[-0]反=11111111,[-1]反=11111110,[-127]反=10000000。

結(jié)論:二進(jìn)制正數(shù)的反碼就是其原碼。二進(jìn)制負(fù)數(shù)的反碼就是機(jī)器數(shù)符號(hào)位保持不變,其余按位取反。注意:在反碼的表示中,真值0的反碼也可表示為兩種不同的形式,+0和-0。若二進(jìn)制數(shù)X=Xn-1Xn-2…X1X0,則反碼表示法的定義為2n-1>X≥00≥X>-2n-13)二進(jìn)制數(shù)補(bǔ)碼編碼方法補(bǔ)碼編碼的方法如下:設(shè)真值為X,機(jī)器字長為n位,則當(dāng)X≥0時(shí),[X]補(bǔ)的最高位填0,其余n-1位填X的各數(shù)值位的位值,即采用符號(hào)—絕對(duì)值表示。例如,n=8時(shí),[+0]補(bǔ)=00000000,[+1]補(bǔ)=00000001,[+127]補(bǔ)=01111111。當(dāng)X≤0時(shí),[X]補(bǔ)=2n-|X|(MOD2n)。例如,n=8時(shí),[-0]補(bǔ)=00000000,[-1]補(bǔ)=11111111,[-127]補(bǔ)=10000001。結(jié)論:二進(jìn)制正數(shù)的補(bǔ)碼就是其原碼。二進(jìn)制負(fù)數(shù)的補(bǔ)碼就是機(jī)器數(shù)符號(hào)位保持不變,其余位取反碼后末位加1。求負(fù)數(shù)的補(bǔ)碼有一種更簡便的方法:當(dāng)X≤0時(shí),[X]補(bǔ)的最高位填1,其余n-1位填X的各數(shù)值位按位取反(0變1,1變0)后在末位加1的數(shù)值。

注意:①在補(bǔ)碼表示法中,0只有一種表示,即000…000。②對(duì)于10000000這個(gè)補(bǔ)碼編碼,其真值被定義為-128。

【例1-14】機(jī)器字長n=8位,X=+48D,求[X]補(bǔ)。首先將+48D轉(zhuǎn)換為二進(jìn)制數(shù):+110000B。

因?yàn)闄C(jī)器字長是8位,其中符號(hào)占了1位,所以數(shù)值只占7位。將+110000B寫成+0110000B,[+48]補(bǔ)=00110000B,寫成十六進(jìn)制數(shù)為30H,即[+48]補(bǔ)=30H?!纠?-15】機(jī)器字長n=8位,X=-48D,求[X]補(bǔ)。首先將-48D轉(zhuǎn)換為二進(jìn)制數(shù):-110000B。

因?yàn)闄C(jī)器字長是8位,其中符號(hào)占了1位,所以數(shù)值只占7位。將-110000B寫成-10110000B。再將數(shù)值位0110000B按位求反后為1001111B,末位加1后為1010000B。所以,[-48]補(bǔ)=11010000B,寫成十六進(jìn)制數(shù)為0D0H,即[-48]補(bǔ)=0D0H?!纠?-16】機(jī)器字長n=16位,X=+48D,求[X]補(bǔ)+48D轉(zhuǎn)換為二進(jìn)制數(shù):+110000B。

因?yàn)闄C(jī)器字長是16位,其中符號(hào)占了一位,所以數(shù)值占十五位。將+110000B寫成+000000000110000B,[+48]補(bǔ)=0000000000110000B,寫成十六進(jìn)制數(shù)為0030H,即[+48]補(bǔ)=0030H。

【例1-17】機(jī)器字長n=16位,X=-48D,求[X]補(bǔ)。-48D轉(zhuǎn)換為二進(jìn)制數(shù):-110000B。

因?yàn)闄C(jī)器字長是16位,其中符號(hào)占了1位,所以數(shù)值占15位。將-110000B寫成-000000000110000B。000000000110000B按位求反后為1111111111001111B,末位加1后為1111111111010000B。所以,[-48]補(bǔ)=1111111111010000B,寫成十六進(jìn)制數(shù)為0FFD0H,即[-48]補(bǔ)=0FFD0H。注意:在匯編語言中,為了區(qū)別指令碼和數(shù)據(jù),規(guī)定以A~F開始的數(shù)據(jù)前面加零。由此可看出,補(bǔ)碼數(shù)要擴(kuò)展時(shí),正數(shù)是在符號(hào)的前面補(bǔ)0,負(fù)數(shù)是在符號(hào)的前面補(bǔ)1。也就是說,補(bǔ)碼數(shù)擴(kuò)展實(shí)際上是符號(hào)擴(kuò)展。已知補(bǔ)碼求真值的方法是:當(dāng)機(jī)器數(shù)的最高位(符號(hào)位)為0時(shí),表示真值是正數(shù),其值等于其余n-1位的值;當(dāng)機(jī)器數(shù)的最高位(符號(hào)位)為1時(shí),表示真值是負(fù)數(shù),其值等于其余n-1位按位取反后末位加1的值。例如:若[X]補(bǔ)=01111111,則X=(+1111111)2=(+127)10。

若[X]補(bǔ)=11111111,則X=(-0000001)2=(-1)10。

下面討論補(bǔ)碼表示數(shù)的范圍。一般來說,如果機(jī)器字長為n位,則補(bǔ)碼能表示的整數(shù)范圍是-2n-1≤N≤2n-1-1。

例如,當(dāng)n=8時(shí),-128≤N≤+127,其二進(jìn)制補(bǔ)碼數(shù)范圍如表1-2所示。表1-28位二進(jìn)制補(bǔ)碼數(shù)范圍補(bǔ)碼編碼(機(jī)器數(shù))十進(jìn)制數(shù)(真值)01111111+12701111110+12600000010+200000001+100000000011111111-111111110-210000010-12610000001-12710000000-1284)二進(jìn)制數(shù)補(bǔ)碼的運(yùn)算補(bǔ)碼的運(yùn)算規(guī)則是:[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)已知[Y]補(bǔ),求[-Y]補(bǔ)的方法是將[Y]補(bǔ)各位按位取反(包括符號(hào)位在內(nèi))末位加1?,F(xiàn)舉例說明以上兩個(gè)公式的正確性?!纠?-18】設(shè) X1=+0001100

X2=-0001100 Y1=+0000101Y2=-0000101則 [X1]補(bǔ)=00001100 [X2]補(bǔ)=11110100[Y1]補(bǔ)=00000101 [Y2]補(bǔ)=11111011①計(jì)算X1+Y1。+0001100X1 00001100 [X1]補(bǔ)+)+0000101Y1 +)00000101 [Y1]補(bǔ)+0010001X1+Y1 00010001 [X1]補(bǔ)+[Y1]補(bǔ)因?yàn)椋篬X1+Y1]補(bǔ)=[+0010001]補(bǔ)=00010001=[X1]補(bǔ)+[Y1]補(bǔ)所以:[X1+Y1]補(bǔ)=[X1]補(bǔ)+[Y1]補(bǔ)②計(jì)算X1-Y1。+0001100 X1 00001100 [X1]補(bǔ)-)+0000101 Y1

+)11111011 [-Y1]補(bǔ)

+0000111 X1-Y1100000111 [X1]補(bǔ)+[-Y1]補(bǔ)自然丟失因?yàn)椋篬X1-Y1]補(bǔ)=[+0000111]補(bǔ)=00000111=[X1]補(bǔ)+[-Y1]補(bǔ)所以:[X1-Y1]補(bǔ)=[X1]補(bǔ)+[-Y1]補(bǔ)③計(jì)算X2+Y2。-0001100 X2

11110100 [X2]補(bǔ)+)-0000101 Y2 +)11111011 [Y2]補(bǔ) -0010001 X2+Y2 11101111 [X2]補(bǔ)+[Y2]補(bǔ)自然丟失因?yàn)椋篬X2+Y2]補(bǔ)=[-0010001]補(bǔ)=11101111=[X2]補(bǔ)+[Y2]補(bǔ)所以:[X2+Y2]補(bǔ)=[X2]補(bǔ)+[Y2]補(bǔ)④計(jì)算X2-Y2。-0001100 X2 11110100 [X2]補(bǔ)-)-0000101 Y2 +) 00000101 [-Y2]補(bǔ)

-0000111 X2-Y2 11111001 [X2]補(bǔ)+[-Y2]補(bǔ)因?yàn)椋篬X2-Y2]補(bǔ)=[-0000111]補(bǔ)=11111001=[X2]補(bǔ)+[-Y2]補(bǔ)所以:[X2-Y2]補(bǔ)=[X2]補(bǔ)+[-Y2]補(bǔ)由此可看出,計(jì)算機(jī)引入了補(bǔ)碼編碼后,帶來了以下幾個(gè)優(yōu)點(diǎn):(1)減法轉(zhuǎn)化成了加法,這樣大大簡化了運(yùn)算器硬件電路的設(shè)計(jì),加減法可用同一硬件電路進(jìn)行處理。(2)運(yùn)算時(shí),符號(hào)位與數(shù)值位同等對(duì)待,都按二進(jìn)制數(shù)參加運(yùn)算,符號(hào)位產(chǎn)生的進(jìn)位丟掉不管,其結(jié)果是正確的。這大大簡化了運(yùn)算規(guī)則。運(yùn)用以上兩個(gè)公式時(shí),要注意以下兩點(diǎn):(1)公式成立有個(gè)前提條件,就是運(yùn)算結(jié)果不能超出機(jī)器數(shù)所能表示的范圍,否則運(yùn)算結(jié)果不正確,按“溢出”處理。例如,設(shè)機(jī)器字長為8位,則-128≤N≤+127,計(jì)算(+64)+(+65)。+64 01000000+)+65 +) 01000001+129 10000001—→-127顯然這個(gè)結(jié)果是錯(cuò)誤的。究其原因是:(+64)+(+65)=+129>+127,超出了字長為8位所能表示的最大值,產(chǎn)生了“溢出”,所以結(jié)果值出錯(cuò)。再如,計(jì)算(-125)+(-10)。-125 10000011+)-10 +) 11110110-135 101111001—→+121顯然,計(jì)算結(jié)果也是錯(cuò)誤的。其原因是:(-125)+(-10)=-135<-128,超出了字長為8位所能表示的最小值,產(chǎn)生了“溢出”,所以結(jié)果出錯(cuò)。(2)采用補(bǔ)碼運(yùn)算后,結(jié)果也是補(bǔ)碼,欲得運(yùn)算結(jié)果的真值,還需進(jìn)行轉(zhuǎn)換。

2.無符號(hào)整數(shù)的編碼及運(yùn)算規(guī)則在某些情況下,計(jì)算機(jī)要處理的數(shù)據(jù)全是正數(shù),此時(shí)機(jī)器數(shù)再保留符號(hào)位就沒有意義了。這時(shí),將機(jī)器數(shù)最高有效位也作為數(shù)值位處理,也就是說,假設(shè)機(jī)器字長為n位,則有符號(hào)整數(shù)的編碼可表示為符號(hào)位數(shù)值位1位n-1位無符號(hào)整數(shù)的編碼可表示為數(shù)值位n位無符號(hào)整數(shù)的表示范圍是:0≤N≤2n-1。

例如,當(dāng)n=8位時(shí),表示范圍是:0≤N≤255;當(dāng)n=16位時(shí),表示范圍是:0≤N≤65535。

計(jì)算機(jī)中最常見的無符號(hào)整數(shù)是地址,另外,雙字長數(shù)據(jù)的低位字也是無符號(hào)整數(shù)。要注意的是,計(jì)算機(jī)本身不論是對(duì)有符號(hào)數(shù)還是無符號(hào)數(shù),總是按照補(bǔ)碼的運(yùn)算規(guī)則做運(yùn)算。例如,機(jī)器做這樣一個(gè)運(yùn)算:10001010+) 00000111 10010001可以把它看作是兩個(gè)無符號(hào)整數(shù)相加:也可以把它看作是兩個(gè)有符號(hào)整數(shù)相加:138+) 70145-118+)7-111也就是說,不論把二進(jìn)制數(shù)解釋成有符號(hào)數(shù)還是無符號(hào)數(shù),其結(jié)果都是正確的。因此,機(jī)器采用補(bǔ)碼編碼以后,不必針對(duì)無符號(hào)數(shù)和有符號(hào)數(shù)設(shè)計(jì)兩套不同的電路,無符號(hào)數(shù)和有符號(hào)數(shù)的運(yùn)算是兼容的。這也是采用補(bǔ)碼后帶來的一大優(yōu)點(diǎn)。

3.十進(jìn)制數(shù)的編碼及運(yùn)算人們?cè)谌粘I钪辛?xí)慣使用十進(jìn)制數(shù),而在計(jì)算機(jī)內(nèi),采用二進(jìn)制表示和處理數(shù)據(jù)更方便。因此,計(jì)算機(jī)在輸入和輸出數(shù)據(jù)時(shí),要進(jìn)行十→二和二→十的進(jìn)制數(shù)轉(zhuǎn)換。但是,在某些特定的應(yīng)用領(lǐng)域中(如商業(yè)統(tǒng)計(jì)),數(shù)據(jù)的運(yùn)算很簡單,但數(shù)據(jù)的輸入和輸出量很大,這樣,進(jìn)制轉(zhuǎn)換所占的時(shí)間比例就會(huì)很大。從提高計(jì)算機(jī)的運(yùn)行效率考慮,可以采用在計(jì)算機(jī)內(nèi)部直接用十進(jìn)制表示和處理數(shù)據(jù)的方法。以下介紹在計(jì)算機(jī)內(nèi)部的十進(jìn)制數(shù)的編碼方法及運(yùn)算方法。十進(jìn)制數(shù)的每一個(gè)數(shù)位的基為10,但到了計(jì)算機(jī)內(nèi)部,必須用基2碼對(duì)每個(gè)十進(jìn)制數(shù)位進(jìn)行編碼,所需要的最少的基碼的位數(shù)為lb10(即log210),取整數(shù)為4。4位基2碼有16種不同的組合,怎樣從中選擇出10個(gè)組合來表示十進(jìn)制數(shù)位的0~9,有非常多的方案,最常見的是8421碼。8421碼是指4個(gè)基2碼的位權(quán)從高到低分別為8、4、2、1,選擇的是0000,0001,0010,…,1001這10種組合,用來表示0~9這10個(gè)數(shù)位,如表1-3所示。表1-3BCD碼表這種編碼的特點(diǎn)是:這4個(gè)基2碼之間滿足二進(jìn)制規(guī)則,而十進(jìn)制數(shù)位之間是十進(jìn)制計(jì)數(shù)規(guī)則。因此,這種編碼實(shí)質(zhì)上是二進(jìn)制編碼的十進(jìn)制數(shù)(BinaryCodedDecimal),因此,簡稱BCD碼或二—十進(jìn)制碼。十進(jìn)制數(shù)碼01234567898421碼0000000100100011010001010110011110001001【例1-19】將十進(jìn)制數(shù)67.9轉(zhuǎn)換成BCD碼。其過程如下:6 7 . 90110 0111 . 1001所以(67.9)10=(01100111.0111)BCD【例1-20】將BCD碼10010110.0110轉(zhuǎn)換成十進(jìn)制數(shù),其過程如下:10010110 . 01109 6 . 6所以(10010110.0110)BCD=(96.6)10

BCD碼的運(yùn)算規(guī)則:BCD碼是十進(jìn)制數(shù),而運(yùn)算器對(duì)數(shù)據(jù)做加減運(yùn)算時(shí),都是按二進(jìn)制運(yùn)算規(guī)則進(jìn)行處理的。這樣,當(dāng)將BCD碼傳送給運(yùn)算器進(jìn)行運(yùn)算時(shí),其結(jié)果需要修正。修正的規(guī)則是:當(dāng)兩個(gè)BCD碼相加,如果和等于或小于1001(即9H),不需要修正;如果相加之和在1010到1111(即0AH~0FH)之間,則需加6H進(jìn)行修正;如果相加時(shí)本位產(chǎn)生了進(jìn)位,也需加6H進(jìn)行修正。這樣做的原因是,機(jī)器按二進(jìn)制相加,所以4位二進(jìn)制數(shù)相加時(shí),是按“逢十六進(jìn)一”的原則進(jìn)行運(yùn)算的,而實(shí)質(zhì)上是2個(gè)十進(jìn)制數(shù)相加,應(yīng)該按“逢十進(jìn)一”的原則相加,16與10相差6,所以當(dāng)和超過9或有進(jìn)位時(shí),都要加6進(jìn)行修正。下面舉例說明?!纠?-21】計(jì)算1+8的值如果將1和8送給機(jī)器進(jìn)行加法運(yùn)算,其運(yùn)算過程如下:0001+)10001001結(jié)果是1001,即十進(jìn)制數(shù)9,1+8=9正確。【例1-22】需要修正BCD碼運(yùn)算值的舉例。①計(jì)算5+7的值。0101+)01111100結(jié)果大于9+)0110加6修正10010結(jié)果是0010,即十進(jìn)制數(shù)2,還產(chǎn)生了進(jìn)位。5+7=12,結(jié)論正確。②計(jì)算9+9的值。1001+)100110010+)011011000結(jié)果是1000,即十進(jìn)制的8,還產(chǎn)生進(jìn)位,故加6修正。9+9=18,結(jié)論正確。若做減法運(yùn)算,其修正規(guī)則為:當(dāng)兩個(gè)BCD碼相減,如果差等于或小于1001,不需要修正;如果相減時(shí)本位產(chǎn)生了借位,則應(yīng)減6H加以修正。原因是:如果有借位,機(jī)器將這個(gè)借位當(dāng)十六看待,而實(shí)際上應(yīng)該當(dāng)十看待,因此,應(yīng)該將差值再減6H才是BCD碼的正確結(jié)果值。下面舉兩個(gè)例子進(jìn)行說明。【例1-23】需要修正BCD碼運(yùn)算值的舉例。①計(jì)算9-7的值。1001-)01110010結(jié)果值是0010,即十進(jìn)制數(shù)2。9-7=2,結(jié)論正確。②計(jì)算7-9的值?!l(fā)生借位10111-)10011110-)0110減6修正1000結(jié)果值是1000,即十進(jìn)制數(shù)8,有借位。7-9=8,結(jié)論正確。(8是-2以10為模的補(bǔ)碼,在機(jī)器中,負(fù)數(shù)都以補(bǔ)碼形式表示)在計(jì)算機(jī)中BCD碼有兩種格式:壓縮BCD碼和非壓縮BCD碼:(1)非壓縮BCD碼:1字節(jié)(8位二進(jìn)制)中僅表示一位BCD數(shù),例如:(00000110)BCD=6。(2)壓縮BCD碼:1字節(jié)中僅表示兩位BCD數(shù),例如:(01100110)BCD=66。

另外,BCD碼除了采用上述方法調(diào)整以外,也可以在交付計(jì)算機(jī)運(yùn)算之前,先將BCD碼轉(zhuǎn)換為二進(jìn)制數(shù),然后交付計(jì)算機(jī)運(yùn)算,運(yùn)算以后再將二進(jìn)制結(jié)果轉(zhuǎn)換為BCD碼。1.4.2非數(shù)值數(shù)據(jù)的二進(jìn)制編碼現(xiàn)代計(jì)算機(jī)不僅要處理數(shù)值數(shù)據(jù),而且還要處理大量的非數(shù)值數(shù)據(jù),像英文字母、標(biāo)點(diǎn)符號(hào)、專用符號(hào)、漢字等等。前面已說過,不論什么數(shù)據(jù),都必須用基2碼編碼后才能存儲(chǔ)、傳送及處理,非數(shù)值數(shù)據(jù)也不例外。下面分別討論常見的非數(shù)值數(shù)據(jù)的二進(jìn)制編碼方法。

1.字符編碼使用最多、最普遍的是ASCII字符編碼,即美國標(biāo)準(zhǔn)信息交換代碼(AmericanStandardCodeforInformationInterchange),具體見表1-4。表1-4ASCII字符編碼B6B5B4

B3B2B1B0000(0)001(1)010(2)011(3)100(4)101(5)110(6)111(7)0000(0)NULDLESP0@P`p0001(1)SOHDC1!1AQaq0010(2)STXDC2″2BRbr0011(3)ETXDC3#3CScs0100(4)EOTDC4$4DTdt0101(5)ENQNAK%5EUeu0110(6)ACKSYN&6FVfv0111(7)BELETB?7GWgw1000(8)BSCAN(8HXhx1001(9)HTEM)9IYiy1010(A)LFSUB*:JZjz1011(B)VTESC+;K[k{1

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論