《計算機(jī)組成原理》 課件 傅籬 第1、2章 計算機(jī)系統(tǒng)概論、計算機(jī)中數(shù)據(jù)的表示與運(yùn)算_第1頁
《計算機(jī)組成原理》 課件 傅籬 第1、2章 計算機(jī)系統(tǒng)概論、計算機(jī)中數(shù)據(jù)的表示與運(yùn)算_第2頁
《計算機(jī)組成原理》 課件 傅籬 第1、2章 計算機(jī)系統(tǒng)概論、計算機(jī)中數(shù)據(jù)的表示與運(yùn)算_第3頁
《計算機(jī)組成原理》 課件 傅籬 第1、2章 計算機(jī)系統(tǒng)概論、計算機(jī)中數(shù)據(jù)的表示與運(yùn)算_第4頁
《計算機(jī)組成原理》 課件 傅籬 第1、2章 計算機(jī)系統(tǒng)概論、計算機(jī)中數(shù)據(jù)的表示與運(yùn)算_第5頁
已閱讀5頁,還剩131頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章計算機(jī)系統(tǒng)概論

1.1計算機(jī)的發(fā)展歷程1.1.1計算機(jī)的發(fā)展簡史由于機(jī)械式計算機(jī)早已退出歷史舞臺,而電子模擬計算機(jī)目前也極少應(yīng)用,所以,今天人們所稱的“計算機(jī)”在無特別指出的情況下就是指“電子數(shù)字計算機(jī)”。1.計算機(jī)的發(fā)展歷程18世紀(jì)第一次工業(yè)革命開始,各種類型的機(jī)械式的計算工具便陸續(xù)出現(xiàn),開始有了機(jī)械式計算機(jī)。1812年,英國數(shù)學(xué)家、發(fā)明家巴貝奇(CharlesBabbage)首先提出了整個計算過程自動化的概念,1822年用機(jī)械方式設(shè)計出了差分機(jī),提高了乘法運(yùn)算速度。巴貝奇在用機(jī)械方式設(shè)計計算機(jī)的過程中提出了通用自動計算機(jī)必須具有“輸入、輸出、處理、存儲、控制”五大功能等設(shè)計思想,奠定了今天電子計算機(jī)的基礎(chǔ)。

因此,有人稱巴貝奇為現(xiàn)代計算機(jī)之父。英國數(shù)學(xué)家、發(fā)明家巴貝奇(CharlesBabbage)19世紀(jì)末人類開始使用電做動力,1904年英國物理學(xué)家弗萊明發(fā)明了世界上第一只電子二極管,1906年美國發(fā)明家德福雷斯特發(fā)明了世界上第一支電子三極管,標(biāo)志著世界由此進(jìn)入電子時代。現(xiàn)代計算機(jī)理論上真正的奠基人是英國數(shù)學(xué)家艾蘭·圖靈(AlanTuring)。1936年,24歲的圖靈在倫敦權(quán)威的數(shù)學(xué)雜志上發(fā)表了一篇劃時代的重要論文《可計算數(shù)字及其在判斷性問題中的應(yīng)用》。在這篇論文中,他指出設(shè)計出一臺通用計算機(jī)理論上是可能的,他還提出了著名的“圖靈機(jī)”模型、和“圖靈測試”。為紀(jì)念圖靈對計算機(jī)科學(xué)的貢獻(xiàn),國際計算機(jī)學(xué)會ACM(AssociationforComputingMachinery,縮寫ACM)在1966年創(chuàng)立了“圖靈獎”,每年頒發(fā)給在計算機(jī)科學(xué)技術(shù)領(lǐng)域做出杰出貢獻(xiàn)的人士,“圖靈獎”號稱計算機(jī)業(yè)界和學(xué)術(shù)界的諾貝爾獎。英國數(shù)學(xué)家艾蘭·圖靈(AlanTuring)另外一個對現(xiàn)代電子計算機(jī)發(fā)展作出巨大貢獻(xiàn)的人物是現(xiàn)代信息論的奠基人美國數(shù)學(xué)家克勞德·艾爾伍德·香農(nóng)(ClaudeElwoodShannon)。1938年22歲的香農(nóng)(1916年-2001年)發(fā)表了他著名的碩士論文《繼電器和開關(guān)電路的符號分析》,把布爾代數(shù)的“真”與“假”和電路系統(tǒng)的“開”與“關(guān)”對應(yīng)起來,并用“1”和“0”表示。香農(nóng)首次用布爾代數(shù)進(jìn)行開關(guān)電路分析,并證明布爾代數(shù)的邏輯運(yùn)算可以通過繼電器電路來實現(xiàn),明確地給出了實現(xiàn)加、減、乘、除等運(yùn)算的電子電路的設(shè)計方法。香農(nóng)的理論還為計算機(jī)具有邏輯功能奠定了基礎(chǔ),從而使電子計算機(jī)既能用于數(shù)值計算,又具有各種非數(shù)值應(yīng)用功能,使得以后的計算機(jī)幾乎在任何領(lǐng)域中都得到了廣泛的應(yīng)用。美國數(shù)學(xué)家克勞德·艾爾伍德·香農(nóng)(ClaudeElwoodShannon)正是在這些背景下,1945年底,世界上第一臺通用電子數(shù)字計算機(jī)ENIAC(ElectronicNumericalIntegratorandComputer,縮寫ENIAC)在美國研制成功,并于1946年2月公諸于世。ENIAC堪稱人類偉大的發(fā)明之一,從此開創(chuàng)了人類社會的信息時代。美籍匈牙利數(shù)學(xué)家馮·諾依曼(VonNeumann)(1903年-1957年)。他和他的同事們于1949年5月在ENIAC基礎(chǔ)上研制了另外一臺電子計算機(jī)EDVAC(ElectronicDiscreteVariableAutomaticComputer,縮寫EDVAC)。在電子數(shù)字計算機(jī)發(fā)展史上ENIAC被稱為“始祖”,但ENIAC采用的是十進(jìn)制,而馮·諾依曼的EDVAC機(jī)在設(shè)計中采用了被后人廣泛采納的“存儲程序”和二進(jìn)制等先進(jìn)思想,對后來的計算機(jī)在體系結(jié)構(gòu)和工作原理上奠定了基礎(chǔ)?,F(xiàn)代電子計算機(jī)的組成原理均是依據(jù)美籍匈牙利數(shù)學(xué)家馮·諾依曼等發(fā)表的題為《關(guān)于電子計算裝置邏輯結(jié)構(gòu)初探》報告中所闡述的思想構(gòu)建的。因此,我們把今天的電子計算機(jī)稱為“馮·諾依曼”機(jī)。美籍匈牙利數(shù)學(xué)家馮·諾依曼(VonNeumann)2.電子計算機(jī)的發(fā)展階段電子計算機(jī)的發(fā)展大體經(jīng)歷了四代,這四代的劃分是以組成電子計算機(jī)的核心電子元器件的發(fā)展為標(biāo)志的。第一代電子計算機(jī)稱為電子管計算機(jī)(1946-1958年):這種計算機(jī)的主要邏輯元件采用電子管。電子管體積大、功耗高、反應(yīng)速度慢、壽命短。第二代電子計算機(jī)稱為晶體管計算機(jī)(1959-1964年):其主要邏輯元件采用的是晶體管。這種新型的電子器件體積只有電子管的幾十分之一,能量消耗小,晶體管壽命長、反應(yīng)速度快、機(jī)械強(qiáng)度高。第三代電子計算機(jī)稱為中小規(guī)模集成電路計算機(jī)(1965-1975年):隨著半導(dǎo)體技術(shù)的發(fā)展,到了1964年,一種新的、性能更好的電子器件集成電路出現(xiàn)了,它把許多個晶體管采用特殊的制作工藝集成到一塊面積只有幾平方毫米的半導(dǎo)體芯片上,最初是集成幾個到幾十個,再到成千上萬個晶體管,這種電子元器件稱為中、小規(guī)模集成電路。用這種中、小規(guī)模集成電路為核心電子元器件制造的計算機(jī)就是第三代計算機(jī)。第四代電子計算機(jī)稱為大規(guī)模和超大規(guī)模集成電路計算機(jī)(1976-現(xiàn)在):第四代計算機(jī)以采用大規(guī)模和超大規(guī)模集成電路為標(biāo)志。

大規(guī)模和超大規(guī)模集成電路芯片上的晶體管數(shù)目達(dá)到了幾百萬、幾千萬乃至幾十億只,集成電路技術(shù)的發(fā)展使計算機(jī)向更高速化、體積更小化發(fā)展。3.電子數(shù)字計算機(jī)的分類關(guān)于電子數(shù)字計算機(jī)的分類,有很多種分類方法。

從設(shè)計原理上把電子計算機(jī)分為:數(shù)字電子計算機(jī)和模擬電子計算機(jī);從使用領(lǐng)域把電子計算機(jī)分為:通用計算機(jī)和專用計算機(jī);按照運(yùn)算規(guī)模,我們把電子計算機(jī)分為巨型機(jī)(超級計算機(jī))、微型計算機(jī)(個人計算機(jī))、嵌入式計算機(jī)(單片機(jī)等)。

(1)巨型機(jī)巨型機(jī)(Supercomputer)又稱為超級計算機(jī),它以極高的計算能力為主要發(fā)展目標(biāo),是一個國家科技水平、經(jīng)濟(jì)實力和軍事能力的象征。超級計算機(jī)的基本結(jié)構(gòu)是將許多微處理器以并行架構(gòu)的方式組合在一起,目前超級計算機(jī)的計算速度已達(dá)到峰值每秒億億次級浮點運(yùn)算。國家超級計算無錫中心的“神威·太湖之光”超級計算機(jī)安裝了40960個中國自主研發(fā)的“申威26010”眾核處理器,該眾核處理器采用64位自主申威指令系統(tǒng),峰值性能為12.5億億次/秒,持續(xù)性能為9.3億億次/秒。(2)微型計算機(jī)。微型計算機(jī)又稱個人計算機(jī)(PersonalComputer,縮寫PC),通常簡稱為微機(jī)(PC機(jī)),俗稱電腦。指在大小、性能以及價位等多個方面適合于個人使用,并由最終用戶直接操控的計算機(jī)的統(tǒng)稱。

臺式機(jī)、筆記本電腦、平板電腦等均屬于個人計算機(jī)的范疇。(3)嵌入式計算機(jī)系統(tǒng)將中央處理器、存儲器和輸入輸出接口集成在一塊芯片上的微型計算機(jī),簡稱單片機(jī)(SingleChipComputer)或者單片系統(tǒng)(SoC,SystemonChip)。

由于單片機(jī)主要應(yīng)用于控制系統(tǒng),故通常又稱為微控制器MCU(MicroControlUnit)或嵌入式計算機(jī)(EmbeddedComputer)。1.1.2計算機(jī)的應(yīng)用按照電子計算機(jī)的應(yīng)用特點,傳統(tǒng)的分類方法大體可以概括為科學(xué)計算、數(shù)據(jù)處理、過程控制、輔助設(shè)計和人工智能等幾大類。1.科學(xué)計算計算機(jī)最初是作為計算工具而面世的。因此,科學(xué)計算是計算機(jī)最早進(jìn)入的一個應(yīng)用領(lǐng)域,其特點是計算量大和數(shù)值變化范圍大。許多計算領(lǐng)域的問題,如計算物理、計算力學(xué)、計算化學(xué)等均可以歸結(jié)為數(shù)值計算問題。這類計算往往涉及到較復(fù)雜的數(shù)學(xué)公式,如求解上千階的微分方程組、幾百個方程的線性方程組、大型的矩陣運(yùn)算等等。2.?dāng)?shù)據(jù)處理所謂數(shù)據(jù)處理也叫信息加工,是指利用計算機(jī)對大量的原始數(shù)據(jù)進(jìn)行采集、存儲、整理、計算等綜合處理,加工成人們所需要的數(shù)據(jù)形式。3.過程控制所謂過程控制,即對某一物理過程或工作對象,使用計算機(jī)進(jìn)行控制,使其處于最佳工作狀態(tài)。通過各種傳感器獲得的各種物理信號經(jīng)轉(zhuǎn)換為可測可控的數(shù)據(jù)信號后,再經(jīng)計算機(jī)運(yùn)算,根據(jù)偏差,驅(qū)動執(zhí)行機(jī)構(gòu)來調(diào)整,便可達(dá)到控制的目的。4.辦公自動化辦公自動化(OA-OfficeAutomation)是指使用現(xiàn)代化工具與手段,最大限度地幫助辦公室人員處理辦公業(yè)務(wù)。5.輔助系統(tǒng)計算機(jī)輔助設(shè)計(CAD-ComputerAidedDesign)是指用計算機(jī)來幫助設(shè)計人員完成各種各樣的設(shè)計工作。它是加快產(chǎn)品設(shè)計周期、提高產(chǎn)品設(shè)計質(zhì)量的重要手段。比如:計算機(jī)輔助制造(CAM-ComputerAidedManufacture)、計算機(jī)輔助教學(xué)(CAI-ComputerAidedInstruction)等6.仿真所謂計算機(jī)仿真(SIM-Simulation),也叫計算機(jī)模擬,是指利用計算機(jī)仿造真實對象的某些特征與行為的技術(shù)。通過這種仿造或模擬,可以更加有效地研究真實對象?,F(xiàn)在工程應(yīng)用中出現(xiàn)了大量的計算機(jī)仿真軟件,幫助工程師進(jìn)行項目和產(chǎn)品設(shè)計。7.人工智能人工智能是研究解釋和模擬人類智能、智能行為及其規(guī)律的專門學(xué)科,是當(dāng)今電子計算機(jī)應(yīng)用研究最前沿的學(xué)科。近年來在模式識別、語音識別、專家系統(tǒng)和機(jī)器人制作方面都取得了很大的成就。

今天的社會計算機(jī)應(yīng)用無處不在,人們的日常生活都要使用計算機(jī),聊天、通信、購物、電子支付等都需要使用計算機(jī)(手機(jī)),我們的生活已經(jīng)離不開計算機(jī)。

1.2計算機(jī)系統(tǒng)的基本結(jié)構(gòu)1.2.1計算機(jī)系統(tǒng)1.計算機(jī)的組成

一個完整的電子計算機(jī)系統(tǒng)是由兩個部分組成的:硬件(Hardware)部分和軟件(Software)部分。(1)硬件所謂“硬件”是指計算機(jī)的實體部份,它由看得見摸得著的各種電子元器件、各類光、電、機(jī)設(shè)備的實物組成,是構(gòu)成計算機(jī)系統(tǒng)的各種物理設(shè)備的總稱。(2)軟件所謂“軟件”是應(yīng)用、管理和維護(hù)計算機(jī)的各類程序和文檔的總稱。計算機(jī)的軟件通常又分為兩大類:系統(tǒng)軟件和應(yīng)用軟件。①系統(tǒng)軟件又稱為系統(tǒng)程序,主要用來管理整個計算機(jī)系統(tǒng),使系統(tǒng)資源得到合理調(diào)度,確保高效運(yùn)行。

系統(tǒng)軟件通常包括:操作系統(tǒng)、標(biāo)準(zhǔn)程序庫、語言處理程序、服務(wù)性程序。②應(yīng)用軟件又稱為應(yīng)用程序,是針對某個應(yīng)用領(lǐng)域的具體問題而開發(fā)和研制的程序,這類程序成千上萬。正是由于應(yīng)用軟件的特點,才使得計算機(jī)的應(yīng)用日益滲透到社會的各行各業(yè)。

常見的應(yīng)用軟件歸為以下幾類:公處理軟件;信息管理軟件;圖像處理軟件;多媒體處理軟件;網(wǎng)絡(luò)應(yīng)用軟件等2.計算機(jī)系統(tǒng)的層次結(jié)構(gòu)一個完整的計算機(jī)系統(tǒng)宏觀地看,可以分成兩個層次:軟件和硬件。在這個層次結(jié)構(gòu)中:下層是硬件,上層是軟件。

如果把上層的軟件部分再細(xì)分,又可以分為兩層:應(yīng)用軟件和系統(tǒng)軟件。從計算機(jī)的層次結(jié)構(gòu)上我們可以看出,計算機(jī)類專業(yè)人才從大類上分為軟件工程師和硬件工程師,分別工作在計算機(jī)系統(tǒng)的軟件層和硬件層。

軟件層上的軟件開發(fā)及使用的語言。

(1)機(jī)器語言

程序員要開發(fā)某個軟件必須使用某種計算機(jī)語言。計算機(jī)硬件唯一認(rèn)識的語言就是“機(jī)器語言”,這種語言由“0”、“1”二進(jìn)制代碼組成。早期的程序員都是使用機(jī)器語言編程。下面這段機(jī)器語言程序的功能是:完成8和12兩個數(shù)相加。1011000000001000000001000000110011110100上面的機(jī)器語言程序中包含三條機(jī)器語言指令(每一行是一條機(jī)器語言指令)。從這個機(jī)器語言程序中我們可以感覺到,機(jī)器語言如果不特別說明,很難看懂,而且編程效率低。

(2)匯編語言

為了解決機(jī)器語言不易看懂、編程效率低的問題,就出現(xiàn)了匯編語言。

匯編語言是使用助記符的語言。我們把這3條機(jī)器語言指令對應(yīng)的匯編語言助記符寫下來。MOVAC,#81011000000001000ADDAC,#120000010000001100HLT11110100上面的程序中,左邊用助記符寫的程序我們稱為“匯編語言”程序,程序中每一條助記符寫的指令我們稱之為匯編語言指令。我們可以看到用助記符寫的“匯編語言”程序比右邊“機(jī)器語言”程序容易看懂得多。

有了匯編語言,程序員就不再使用機(jī)器語言編程了。計算機(jī)硬件電路唯一認(rèn)識的是機(jī)器語言指令,程序員使用匯編語言編寫的程序必須“翻譯”成機(jī)器語言程序,這個過程叫“匯編”(現(xiàn)在有些教材也稱為“編譯”)。

把匯編語言程序“翻譯”成機(jī)器語言程序的專門程序我們叫“匯編程序”。

“匯編語言”指令和機(jī)器語言指令是一一對應(yīng)的關(guān)系,如果改變了計算機(jī)硬件系統(tǒng),機(jī)器語言指令系統(tǒng)要改變,因此,用匯編語言編寫的計算機(jī)程序的可移植性差,這樣對程序員就很不方便。人們期待有一種可移植性好的計算機(jī)語言,于是就誕生了“高級語言”。

(3)高級語言“高級語言”是參照數(shù)學(xué)語言而設(shè)計的近似于日常會話的計算機(jī)語言。

高級語言不依賴計算機(jī)硬件,具有很好的可移植性。人們熟悉的C語言、Java語言等都屬于高級語言。下面一段程序是用C語言完成的8+12,我們可以看看使用高級語言C編寫的程序和前面講述的用匯編語言、機(jī)器語言程序之間的差異。#include<stdio.h>main(){inta,b;a=8;b=a+12;printf(“%d”,b);}在C語言編寫的程序中使用了數(shù)學(xué)中的一些表達(dá)方式:a=8;b=a+12。這樣我們更容易理解。程序中的描述也更接近自然語言。高級語言也要通過“翻譯”成機(jī)器語言計算機(jī)硬件才能運(yùn)行,這個專門的“翻譯”程序我們把它稱為“編譯程序”,這個“翻譯”的過程稱為編譯。(4)從程序員的角度看計算機(jī)系統(tǒng)的層次結(jié)構(gòu)。

這里的實際機(jī)器就是“硬件”,上面的各種虛擬機(jī)器就是“軟件”如果把實際機(jī)器的設(shè)計再細(xì)分為實際機(jī)器級和微程序機(jī)器級,計算機(jī)的層次結(jié)構(gòu)可以看成以下5級組成。從計算機(jī)層次結(jié)構(gòu)上看,實際機(jī)器處于計算機(jī)層次結(jié)構(gòu)的最底層,是計算機(jī)系統(tǒng)的物理實體,是計算機(jī)系統(tǒng)的基礎(chǔ)。在這個5級的層次結(jié)構(gòu)中,上面3級是計算機(jī)軟件研究的范圍,下面2級是計算機(jī)硬件研究的范圍。《計算機(jī)組成原理》課程講授的是下面兩級的計算機(jī)硬件知識。3.計算機(jī)系統(tǒng)的基本體系結(jié)構(gòu)美籍匈牙利數(shù)學(xué)家馮·諾依曼在《關(guān)于電子計算裝置邏輯結(jié)構(gòu)初探》報告中所闡述的思想可概括為三點:(1)采用二進(jìn)制形式表示數(shù)據(jù)和指令計算機(jī)采用二進(jìn)制。計算機(jī)指令是人對計算機(jī)發(fā)出的用來完成一個最基本操作的工作命令,計算機(jī)硬件唯一認(rèn)識的是由“0”和“1”組成的機(jī)器指令。計算機(jī)中指令和數(shù)據(jù)在代碼的外形上并無區(qū)別,都是由0和1組成的代碼序列,只是各自約定的含義不同。(2)采用存儲程序的工作方式程序是人們?yōu)榻鉀Q某一實際問題而寫出的有序的一條條指令的集合。存儲程序方式意味著事先編制程序并將程序(包含指令和數(shù)據(jù))存入主存儲器中,計算機(jī)在運(yùn)行程序時能自動地、連續(xù)地從存儲器中依次取出指令并執(zhí)行,直到程序結(jié)束。(3)計算機(jī)硬件由運(yùn)算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備五大部件組成4.計算機(jī)的硬件系統(tǒng)計算機(jī)硬件系統(tǒng)是由運(yùn)算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備五大部件組成。

現(xiàn)代計算機(jī)把運(yùn)算器和控制器做在同一個芯片內(nèi),稱為中央處理器(CentralProcessingUnit,縮寫CPU)。計算機(jī)中的存儲器分為主存儲器和輔助存儲器,計算機(jī)硬件系統(tǒng)五大組成部件中的存儲器是指主存儲器(MainMemory,簡稱MM)這樣,現(xiàn)代計算機(jī)把硬件的五大部分歸納為由三大部分組成:CPU,主存儲器(MM),I/O設(shè)備。其中,CPU與主存儲器合起來稱為“主機(jī)”,I/O設(shè)備又稱為外部設(shè)備(外設(shè))。(1)運(yùn)算器運(yùn)算器通常由算術(shù)邏輯部件ALU(ArithmeticLogicUnit,縮寫ALU)和一系列寄存器組成。運(yùn)算器中最重要的部件是算術(shù)邏輯部件,所以我們有時候以ALU指代運(yùn)算器。(2)控制器控制器CU(ControlUnit,縮寫CU)是計算機(jī)的指揮中心,它使計算機(jī)各部件自動協(xié)調(diào)地工作。

控制器工作的實質(zhì)就是解釋程序中的指令,它每次從存儲器讀取一條指令,經(jīng)過分析譯碼,產(chǎn)生一串操作命令,發(fā)向各個部件,控制各部件動作,完成指令功能,使整個機(jī)器連續(xù)地、有條不紊地運(yùn)行。(3)存儲器存儲器(Memory)的主要功能是存放指令和數(shù)據(jù)。指令是計算機(jī)操作的依據(jù),數(shù)據(jù)是計算機(jī)操作的對象。不管是指令還是數(shù)據(jù),在存儲器中都是用二進(jìn)制的形式表示,統(tǒng)稱為信息。注意:這里所說的存儲器是指主存儲器MM(MainMemory,縮寫MM)。對照個人計算機(jī)(PC機(jī))來說,是指個人計算機(jī)中的主存或者內(nèi)存,而硬盤、光盤、U盤是輔助存儲器或者外存。CPU就是通過存儲器的地址編號(地址)來尋找存放在存儲器里的指令和數(shù)據(jù)。CPU對存儲器的操作分為兩種:讀操作和寫操作?!白x”操作是指CPU完成從存儲器的某個存儲單元中取走數(shù)據(jù)的操作;“寫”操作是指CPU把自己處理完了的數(shù)據(jù)存入存儲器的某個存儲單元中的操作。(4)輸入設(shè)備輸入設(shè)備(InputEquipment)是變換輸入信息形式的部件。它將人們熟悉的信息形式變換成計算機(jī)能接收并識別的二進(jìn)制信息形式。(5)輸出設(shè)備輸出設(shè)備(OutputEquipment)是變換計算機(jī)輸出信息形式的部件。輸出設(shè)備的作用是把計算機(jī)處理完后的一串二進(jìn)制數(shù)據(jù)結(jié)果轉(zhuǎn)換成人們或其它設(shè)備能接收和識別的形式1.2.2計算機(jī)的工作過程1.計算機(jī)處理實際問題的步驟用計算機(jī)處理實際問題大致要經(jīng)過以下幾個步驟:(1)首先針對所要解決的問題,經(jīng)過數(shù)學(xué)描述建立起數(shù)學(xué)模型。建立了數(shù)學(xué)模型,研究對象的變化規(guī)律就變成了解一系列方程組的數(shù)學(xué)問題,這便可通過計算機(jī)來求解。(2)再經(jīng)數(shù)值分析,將數(shù)學(xué)模型轉(zhuǎn)變?yōu)榻频臄?shù)值計算公式。數(shù)學(xué)模型中的數(shù)學(xué)方程式往往是很復(fù)雜的,所以必須確定對應(yīng)的計算方法,將它變成適合計算機(jī)運(yùn)算的加、減、乘、除四則運(yùn)算。(3)按照計算公式畫出計算程序的流程圖。根據(jù)流程圖使用某種計算機(jī)語言編制出計算程序。(4)然后通過輸入設(shè)備將計算程序和原始數(shù)據(jù)送入存儲器。2.計算機(jī)的解題過程我們用一個極簡單的例子按照上面的步驟編寫一段程序,然后用一個計算機(jī)的模型機(jī)介紹程序在計算機(jī)中的執(zhí)行過程,從而了解計算機(jī)的工作過程。例如:我們要求機(jī)器把兩個數(shù)8和12相加。按照前面所說的計算機(jī)解題步驟,第一步:建立數(shù)學(xué)模型,第二步:確定計算方法。由于題目十分簡單,這兩步就不需要,我們可以直接進(jìn)入到第三步:使用計算機(jī)匯編語言編寫源程序如下:MOVAC,#8;數(shù)值8送到寄存器AC中

ADDAC,#12;數(shù)值12和寄存器AC的內(nèi)容相加送到AC中

HLT;暫停。源程序中分號后面是對指令的注釋。我們把上面這段匯編語言源程序?qū)?yīng)的機(jī)器語言指令寫出來如下(左邊是匯編語言指令,右邊是機(jī)器語言指令),其中前面兩條指令對應(yīng)的機(jī)器語言指令是16位二進(jìn)制數(shù),我們把他們分成兩行,每行是一個8位二進(jìn)制數(shù):

MOVAC,#81011000000001000ADDAL,#120000010000001100HLT11110100

計算機(jī)的機(jī)器語言指令都是由兩個部分組成:操作碼(OpCode)和操作數(shù)(Operand)(或操作數(shù)的地址碼)為了說明第四步計算機(jī)硬件的工作過程,通過一個簡單和細(xì)化的計算機(jī)模型機(jī)來具體描述。如圖1.20所示:模型機(jī)的結(jié)構(gòu)圖是由中央處理器(CPU)和主存儲器組成,在圖中以虛線為界限,虛線以上是CPU部分,虛線以下是主存儲器部分,兩者合起來構(gòu)成計算機(jī)的主機(jī)。(1)模型機(jī)介紹首先介紹模型機(jī)中CPU結(jié)構(gòu),計算機(jī)中的CPU是由運(yùn)算器和控制器兩部分組成。

①運(yùn)算器

如圖1.20所示,模型機(jī)中CPU的運(yùn)算器部分是由算術(shù)邏輯單元ALU和一些寄存器組成。

寄存器AC(Accumulator,縮寫AC或ACC):連接運(yùn)算器的I1端。寄存器AC由于在計算機(jī)機(jī)器指令中使用最頻繁,所以它有個專門的名稱:累加器。

寄存器BX:作為通用寄存器,可以通過內(nèi)部總線連接到運(yùn)算器的I2端。

數(shù)據(jù)寄存器MDR(MemoryDataRegister,縮寫MDR):存放從主存儲器讀出的指令或數(shù)據(jù)等。

②控制器

程序計數(shù)器PC(ProgramCounter,縮寫PC)當(dāng)前要執(zhí)行的指令的地址由程序計數(shù)器PC提供,它在執(zhí)行完一條指令后會自動加1指向下一條指令的地址。指令寄存器IR(InstructionRegister,縮寫IR):從主存儲器中取出的指令,由主存數(shù)據(jù)寄存器MDR通過內(nèi)部總線送至指令寄存器IR,控制單元CU(ControlUnit,縮寫CU):把指令寄存器IR中的指令通過控制電路(CU)譯碼分析,發(fā)出執(zhí)行一條指令所需要的各種控制信息。

主存地址寄存器MAR(MemoryAddressRegister,縮寫MAR):由它把要尋找的存儲單元的地址通過地址總線,送至主存儲器。

(2)機(jī)器語言目標(biāo)程序執(zhí)行過程為了簡化問題,我們認(rèn)為要執(zhí)行的程序指令以及數(shù)據(jù),已經(jīng)通過輸入設(shè)備存入主存儲器內(nèi)。假定每個主存儲器地址對應(yīng)的存儲單元中只能存放8位二進(jìn)制數(shù),所以前面程序中的三條機(jī)器語言指令需要5個存儲單元,每個單元有一個編號(采用二進(jìn)制數(shù)),我們稱為存儲器地址(Address)。如表1.2所示。表1.2機(jī)器語言指令在存儲器中的存放

計算機(jī)的具體工作過程:第一步:CPU從主存儲器中取第一條指令到CPU中,這個過程稱為“取指”,第二步:CPU取到指令后根據(jù)指令的操作碼部分執(zhí)行這條指令的相應(yīng)功能,這個過程稱為“執(zhí)行”。在執(zhí)行完第一條指令后接下來又去取第二條指令,再執(zhí)行第二條指令……,周而復(fù)始直到程序結(jié)束。地址存儲器中存放的機(jī)器語言指令注釋0000000010110000MOVAC,#n0000000100001000n=80000001000000100ADDAC,#n0000001100001100n=120000010011110100HLT(1)在啟動程序運(yùn)行時,首先給PC賦以第一條指令的地址:00000000,然后就進(jìn)入第一條指令的取指階段。取指過程如圖1.21。對照圖1.21

具體說明如下:① PC的內(nèi)容(00000000)送至地址寄存器MAR。② 當(dāng)PC的內(nèi)容可靠地送入地址寄存器MAR后,PC的內(nèi)容加1變?yōu)?0000001。③ 地址寄存器MAR把地址編號00000000通過地址總線(AB)送至主存儲器。經(jīng)地址譯碼器譯碼,選中00000000號(圖中十進(jìn)制0號)單元。④ CPU通過控制總線(CB)發(fā)出讀命令。⑤ 所選中的00000000號(十進(jìn)制0號)單元的內(nèi)容10110000讀至數(shù)據(jù)總線上。⑥ 讀出的數(shù)據(jù)經(jīng)過數(shù)據(jù)總線(DB)送至數(shù)據(jù)寄存器MDR。⑦ 因為是取指階段,取出的是指令,故數(shù)據(jù)寄存器MDR把它送至指令寄存器IR,然后經(jīng)過控制器CU譯碼后發(fā)出執(zhí)行這條指令的各種控制命令。(2)此后就轉(zhuǎn)入了執(zhí)行第一條指令的階段。第一條指令的功能是把指令第二個字節(jié)中的操作數(shù)取出來,然后送入累加器AC中。執(zhí)行指令的過程如圖1.22所示。對照圖1.22取操作數(shù)并執(zhí)行第一條指令的過程如下:① 把PC的內(nèi)容00000001送至地址寄存器MAR。② 待PC的內(nèi)容可靠地送至地址寄存器MAR后,PC自動加l,變?yōu)?0000010。③ 地址寄存器MAR把地址編號00000001通過地址總線(AB)送至主存儲器。經(jīng)地址譯碼器譯碼,選中00000001號(圖中十進(jìn)制1號)單元。④ CPU通過控制總線(CB)發(fā)出讀命令。⑤ 所選中的00000001號(十進(jìn)制1號)單元的內(nèi)容:00001000(十進(jìn)制數(shù)8)讀至數(shù)據(jù)總線上。⑥ 讀出的數(shù)據(jù)經(jīng)過數(shù)據(jù)總線(DB)送至數(shù)據(jù)寄存器MDR。因為已知讀出的是操作數(shù),且指令要求把它送累加器AC,故由MDR通過內(nèi)部數(shù)據(jù)總線送至累加器AC中。

至此,第一條指令執(zhí)行完畢進(jìn)入第二條指令的取指階段。(3)取第二條指令的具體過程如圖1.23所示:對照圖1.23取第二條指令的過程如下:① PC的內(nèi)容(00000010)送至地址寄存器MAR。② 當(dāng)PC的內(nèi)容可靠地送入地址寄存器MAR后,PC的內(nèi)容加1變?yōu)?0000011。③ 地址寄存器MAR把地址編號00000010通過地址總線(AB)送至主存儲器。經(jīng)地址譯碼器譯碼,選中00000010號(圖中十進(jìn)制2號)單元。④ CPU通過控制總線(CB)發(fā)出讀命令。⑤ 所選中的00000010號(十進(jìn)制2號)單元的內(nèi)容00000100讀至數(shù)據(jù)總線上。⑥ 讀出的數(shù)據(jù)經(jīng)過數(shù)據(jù)總線(DB)送至數(shù)據(jù)寄存器MDR。因為是取指階段,取出的是指令,故數(shù)據(jù)寄存器MDR把它送至指令寄存器IR,然后經(jīng)過控制器CU譯碼后發(fā)出執(zhí)行這條指令的各種控制命令。

取指令完成后,接著執(zhí)行第二條指令。

(4)參考圖1.24,取操作數(shù)并執(zhí)行第二條指令的具體過程為:① 把PC的內(nèi)容00000011送至地址寄存器MAR。② 待PC的內(nèi)容可靠地送至地址寄存器MAR后,PC自動加l,變?yōu)?0000100。③ 地址寄存器MAR把地址編號00000011通過地址總線(AB)送至主存儲器。經(jīng)地址譯碼器譯碼,選中00000011號(圖中十進(jìn)制3號)單元。④ CPU通過控制總線(CB)發(fā)出讀命令。⑤ 所選中的00000011號(十進(jìn)制3號)單元的內(nèi)容:00001100(十進(jìn)制數(shù)12)讀至數(shù)據(jù)總線(DB)上。⑥ 讀出的數(shù)據(jù)經(jīng)過數(shù)據(jù)總線(DB)送至數(shù)據(jù)寄存器MDR。⑦ 因為已知讀出的是操作數(shù),且指令要求把它和累加器AC中的數(shù)據(jù)相加,故把讀出的數(shù)據(jù)由MDR通過內(nèi)部數(shù)據(jù)總線送至ALU的一個輸入端I2。⑧ 累加器AC中的數(shù)據(jù)送入ALU的輸入端I1,并且做加法運(yùn)算。⑨ 相加后的結(jié)果00010100(十進(jìn)制數(shù)20)由ALU的輸出端OUT經(jīng)過內(nèi)部數(shù)據(jù)總線輸出到累加器AC中。至此,第二條指令的執(zhí)行階段結(jié)束了,就轉(zhuǎn)入第三條指令的取指階段。按上述類似的過程,取出第三條指令,第三條指令功能是暫停機(jī)器,執(zhí)行完后就暫停機(jī)器。這樣,計算機(jī)通過一個三條指令的程序,完成了8+12=20的計算,運(yùn)算結(jié)果存在累加器AC中。從上面對計算機(jī)工作過程的描述中我們知道,CPU中的程序計數(shù)器PC是計算機(jī)能夠自動執(zhí)行程序的關(guān)鍵。它每執(zhí)行一步后能夠自動加1,指向下一步,使得存放在存儲器中的每一條指令能自動順序執(zhí)行,直到遇到停止執(zhí)行指令為止。

小結(jié):計算機(jī)的工作過程就是CPU的從主存儲器中逐條取指令和執(zhí)行指令的過程。1.2.3計算機(jī)的主要技術(shù)指標(biāo)計算機(jī)的一些主要技術(shù)指標(biāo)如下。1.機(jī)器字長機(jī)器字長是指:CPU內(nèi)部寄存器、運(yùn)算器及數(shù)據(jù)總線等部件之間傳遞和處理數(shù)據(jù)的寬度,也是CPU內(nèi)部能進(jìn)行一次算術(shù)運(yùn)算數(shù)據(jù)的位數(shù)。2.主存儲器容量幾種存儲器容量單位。(1)位(bit,縮寫b):在計算機(jī)中,指一個二進(jìn)制位,由“0”和“1”兩種狀態(tài)組成。(2)字節(jié)(Byte,縮寫B(tài)):計算機(jī)的存儲器中通常用字節(jié)作為基本存儲單位。一個字節(jié)等于8個二進(jìn)制位。1Byte=8bit。(3)字(Word):機(jī)器字長,不同CPU機(jī)器字長不同,可能是8位二進(jìn)制數(shù),也可能是16位、32位、64位二進(jìn)制數(shù)。

主存容量是指主存儲器能存放二進(jìn)制數(shù)據(jù)的總位數(shù)。對于大容量存儲器還可以用千字節(jié)(KB)、兆字(MB)、吉字節(jié)(GB)、太字節(jié)(TB)等表示。其換算關(guān)系為。

1KB=1024B;1MB=1024KB;1GB=1024MB;1TB=1024GB3.運(yùn)算速度常見的計算方法是給出單位時間內(nèi)執(zhí)行指令的平均條數(shù)作為運(yùn)算速度指標(biāo),通常以MIPS(MillionInstructionPerSecond,縮寫MIPS),即每秒百萬條指令作為計量單位。也可以用CPI(CyclePerInstruction)即執(zhí)行一條指令所需的時鐘周期數(shù)。

超級計算機(jī)常用FLOPS(FloatingPointOperationPerSecond)即每秒浮點運(yùn)算次數(shù)作為機(jī)器運(yùn)算速度的重要指標(biāo)之一。4.軟、硬件配置衡量一個計算機(jī)的性能還要看整個系統(tǒng)軟件和硬件配置的情況。5.可靠性計算機(jī)的可靠性一般用平均無故障運(yùn)行時間(MeanTimeBetweenFailure,縮寫MTBF)來衡量。6.性能價格比性能價格比是指計算機(jī)性能與價格的比值。第2章計算機(jī)中數(shù)據(jù)的表示與運(yùn)算2.1進(jìn)位計數(shù)制及其轉(zhuǎn)換計算機(jī)在進(jìn)行數(shù)據(jù)的加工處理時,內(nèi)部數(shù)字電路存儲和運(yùn)算使用的數(shù)據(jù)是采用二進(jìn)制計數(shù)制,簡稱二進(jìn)制(Binary)。現(xiàn)實生活中,人們使用的是十進(jìn)制。為了實現(xiàn)計算機(jī)運(yùn)算,現(xiàn)實生活中的十進(jìn)制數(shù)必須轉(zhuǎn)換成計算機(jī)認(rèn)識的二進(jìn)制數(shù)。計算機(jī)工程師在實際產(chǎn)品研發(fā)過程中為了書寫方便,在計算機(jī)中就引入了八進(jìn)制和十六進(jìn)制。在本小節(jié)我們要學(xué)習(xí)如何將十進(jìn)制、八進(jìn)制、十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制;同時也將學(xué)習(xí)把八進(jìn)制或十六進(jìn)制、二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成我們現(xiàn)實生活中的十進(jìn)制。。2.1.1進(jìn)位計數(shù)制無論哪種進(jìn)位計數(shù)制都有兩個共同點,即按基數(shù)來進(jìn)位、借位;用位權(quán)值來計數(shù)。1.基數(shù)不同的計數(shù)制是以基數(shù)(Radix)來區(qū)分的,若以R代表基數(shù),則:

R=10為十進(jìn)制,可使用0,1,2,3,4,5,6,7,8,9共10個數(shù)字;

R=2

為二進(jìn)制,可使用0,1共2個數(shù)字;

R=8為八進(jìn)制,可使用0,1,2,3,4,5,6,7共8個數(shù)字;

R=16為十六進(jìn)制,可使用0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)共16個數(shù)字。所謂按基數(shù)進(jìn)位、借位,就是在執(zhí)行加法或減法時,要遵守“逢R進(jìn)一,借一當(dāng)R”的規(guī)則。2.位權(quán)值在任何一種數(shù)制中,數(shù)的每個位置上各有一個“位權(quán)值”(PositionWeightValue)。例如:十進(jìn)制數(shù)752.65,這個數(shù)以小數(shù)點為界,整數(shù)部分是小數(shù)點前從右往左共有3個位置,分別為個、十、百或100,101,102。此處的100,101,102即稱為這3個位置的位權(quán)值。類似地,小數(shù)部分是小數(shù)點后從左往右的兩個位置的位權(quán)值分別為10-1,10-2。如果是R進(jìn)制,將10的位置用R代替。例如采用二進(jìn)制,則整數(shù)部分相應(yīng)的位權(quán)值為:20,21,22……。小數(shù)部分的位權(quán)值為:2-1,2-2……。所謂“用位權(quán)值計數(shù)”的原則,即每個位置上的數(shù)符所表示的數(shù)值等于該數(shù)符乘以該位置上的位權(quán)值。3.R進(jìn)制數(shù)按位權(quán)值展開對于任意一個R進(jìn)制數(shù)S=KnKn-1…K1K0.K-1K-2…K-m,它都可以按照位權(quán)值展開成和式來表示成十進(jìn)制數(shù)。即S=Kn×Rn+Kn-1×Rn-1+…+K1×R1+K0×R0+K-1×R-1+K-2×R-2+…+K-m×R-m例如:十進(jìn)制數(shù)752.65=7×102+5×101+2×100+6×10-1+5×10-2

=7×100+5×10+2×1+6×0.1+5×0.01。二進(jìn)制數(shù)101.11=1×22+0×21+1×20+1×2-1+1×2-2

2.1.2不同數(shù)制間的轉(zhuǎn)換1.二、八、十六進(jìn)制轉(zhuǎn)換為十進(jìn)制對任意一個二進(jìn)制、八進(jìn)制或十六進(jìn)制數(shù),均可按照前述R進(jìn)制數(shù)的展開和式方便地計算出相應(yīng)的十進(jìn)制數(shù)。(1101.01)2=1×23+1×22+0×21+1×20+0×2-1+1×2-2=8+4+1+0.25=13.25(237.4)8=2×82+3×81+7×80+4×8-1=128+24+7+0.5=159.5(A05.C)16=l0×162+0×161+5×160+12×16-1=2560+5+0.75=2565.752.十進(jìn)制轉(zhuǎn)換為二、八、十六進(jìn)制十進(jìn)制數(shù)轉(zhuǎn)換為R進(jìn)制數(shù)分整數(shù)轉(zhuǎn)換與小數(shù)轉(zhuǎn)換兩種情況:(1)十進(jìn)制整數(shù)轉(zhuǎn)換為R進(jìn)制整數(shù)。轉(zhuǎn)換規(guī)則為:除以R取余數(shù),直到商為0時結(jié)束。所得余數(shù)序列,先余為低位,后余為高位。(2)十進(jìn)制小數(shù)轉(zhuǎn)換為R進(jìn)制小數(shù)。轉(zhuǎn)換規(guī)則為:乘以R取整數(shù),直到余下的小數(shù)部分為0時結(jié)束,如果余下的小數(shù)部分始終不能為0,則根據(jù)精度需要取相應(yīng)的位數(shù)。所得整數(shù)序列,先整為高位,后整為低位。例題2.1求(11.375)10=()2解:把十進(jìn)制數(shù)寫成整數(shù)部分和小數(shù)部分之和的形式:11.375=11+0.375先進(jìn)行整數(shù)部分進(jìn)行轉(zhuǎn)換:(十進(jìn)制數(shù)11除以2取余數(shù),直到商為0)商余數(shù)

11/2=515/2=212/2=101/2=01按照規(guī)則先余為低位,后余為高位。則(11)10=(1011)2然后進(jìn)行小數(shù)部分轉(zhuǎn)換:(十進(jìn)制數(shù)0.375乘以2取整,直到余數(shù)為0)整數(shù)部分取整后余下的小數(shù)部分

0.375×2=0.75=0+0.750.75×2=1.5=1+0.50.5×2=1+0(結(jié)束)按照規(guī)則先整為高位,后整為低位。則(0.375)10=(0.011)2把整數(shù)和小數(shù)部分合起來,得到答案:(11.375)10=(1011.011)23.八、十六進(jìn)制轉(zhuǎn)換為二進(jìn)制八進(jìn)制轉(zhuǎn)換成二進(jìn)制的規(guī)則:按照表2.1將每位八進(jìn)制數(shù)轉(zhuǎn)換為3位二進(jìn)制數(shù)。表2.1二進(jìn)制與八進(jìn)制轉(zhuǎn)換表十六進(jìn)制轉(zhuǎn)換成二進(jìn)制的規(guī)則:按照表2.2將每位十六進(jìn)制數(shù)轉(zhuǎn)換為4位二進(jìn)制數(shù)。

表2.2二進(jìn)制與十六進(jìn)制轉(zhuǎn)換表1位八進(jìn)制數(shù)012345673位二進(jìn)制數(shù)0000010100111001011101111位十六進(jìn)制數(shù)012345674位二進(jìn)制數(shù)000000010010001101000101011001111位十六進(jìn)制數(shù)89ABCDEF4位二進(jìn)制數(shù)10001001101010111100110111101111例題2.3

求(30.14)8=()2解:將題中八進(jìn)制中的每一位數(shù)按照表2.1展開,即每位八進(jìn)制數(shù)展開成3位二進(jìn)制數(shù),小數(shù)點位置保持不變。這樣(30.14)8=(011000.001100)2

轉(zhuǎn)換后,再將整數(shù)前面的0和小數(shù)后面的0去掉,這樣做不影響結(jié)果,數(shù)值表述更規(guī)范。得到答案:(30.14)8=(11000.0011)2例題2.4

求(70C.A)16=()2解:將題中十六進(jìn)制中的每一位數(shù)按照表2.2展開,即每位十六進(jìn)制數(shù)展開成4位二進(jìn)制數(shù),小數(shù)點位置保持不變。這樣(70C.A)16=(011100001100.1010)2轉(zhuǎn)換后,再將整數(shù)前面的0和小數(shù)后面的0去掉,這樣做不影響結(jié)果,數(shù)值表述更規(guī)范。得到答案:(70C.A)16=(11100001100.101)24.二進(jìn)制轉(zhuǎn)換為八、十六進(jìn)制二進(jìn)制轉(zhuǎn)換成八進(jìn)制的規(guī)則:以小數(shù)點為中心,整數(shù)部分向左、小數(shù)部分向右每3位一組,首尾不足3位添加0補(bǔ)足。按照表2.1將每組3位二進(jìn)制數(shù)轉(zhuǎn)換為1位八進(jìn)制數(shù)。

二進(jìn)制轉(zhuǎn)換成十六進(jìn)制的規(guī)則:以小數(shù)點為中心,整數(shù)部分向左、小數(shù)部分向右每4位一組,首尾不足4位添加0補(bǔ)足。按照表2.2將每組4位二進(jìn)制數(shù)轉(zhuǎn)換為1位十六進(jìn)制數(shù)。例題2.5求(1111100110.10111)2=()8解:先將題中二進(jìn)制中的數(shù)以小數(shù)點為中心,分別向左、向右每3位一組,首尾不足3位添加0補(bǔ)足。(1111100110.10111)2=(001111100110.101110)2然后按照表2.1將每組3位二進(jìn)制數(shù)轉(zhuǎn)換為1位八進(jìn)制數(shù)。得到答案:(1111100110.10111)2=(001111100110.101110)2=(1746.56)8例題2.6求(1111100110.10111)2=()16解:先將題中二進(jìn)制中的數(shù)以小數(shù)點為中心,分別向左、向右每4位一組,首尾不足4位添加0補(bǔ)足。(1111100110.10111)2=(001111100110.10111000)2然后按照表2.2將每組4位二進(jìn)制數(shù)轉(zhuǎn)換為1位十六進(jìn)制數(shù)。得到答案:(1111100110.10111)2=(001111100110.10111000)2=(3E6.B8)16結(jié)論:從上面例題可以看出,用八進(jìn)制和十六進(jìn)制表達(dá)一個同樣大小的二進(jìn)制數(shù),位數(shù)少了許多。這樣,用八進(jìn)制或十六進(jìn)制書寫二進(jìn)制數(shù)簡單方便,不容易出錯。同時,八進(jìn)制或十六進(jìn)制和二進(jìn)制之間的互相轉(zhuǎn)換非常容易。這就是為什么計算機(jī)選用八進(jìn)制、十六進(jìn)制書寫二進(jìn)制數(shù)的原因。2.2數(shù)值型數(shù)據(jù)的表示方法計算機(jī)中處理的數(shù)據(jù)包括兩大類型:數(shù)值型數(shù)據(jù)和非數(shù)值型數(shù)據(jù)。本節(jié)介紹數(shù)值型數(shù)據(jù)。數(shù)值型數(shù)據(jù)分為兩種情況:一種是無符號數(shù);另一種是有符號數(shù)。2.2.1無符號數(shù)生活中的數(shù)據(jù),有些數(shù)據(jù)它始終是整數(shù),而且不會是負(fù)數(shù)。這樣的數(shù)據(jù)很多,例如:班級的學(xué)號,房間的門牌號等。在計算機(jī)中這樣的數(shù)就稱為無符號數(shù)。

所謂無符號數(shù)就是給定的二進(jìn)制數(shù)中的每一位都是數(shù)值位,不需要考慮符號位。為了說明簡單方便,本書中約定都用8位二進(jìn)制數(shù)(N=8)來舉例說明。16位、32位、64位可照此推理。8位二進(jìn)制數(shù)(N=8)能表示的最大無符號數(shù)據(jù)為:轉(zhuǎn)換成十進(jìn)制數(shù)就是:28-1=255。8位二進(jìn)制數(shù)(N=8)能表示的最小無符號數(shù)為:轉(zhuǎn)換成十進(jìn)制數(shù)就是:08位二進(jìn)制數(shù)(N=8)表示的無符號數(shù)的范圍:0~255。N位二進(jìn)制數(shù)表示的無符號數(shù)的范圍:0~2N-1例如:十進(jìn)制數(shù)12寫成計算機(jī)中的無符號數(shù),用8位二進(jìn)制數(shù)(N=8)表示,其步驟如下:首先把十進(jìn)制數(shù)12轉(zhuǎn)換成二進(jìn)制數(shù):(12)10=(1100)2,然后用8位二進(jìn)制數(shù)(N=8)來表示成無符號數(shù)如下:1111111100000000000011002.2.2有符號數(shù)

1.真值與機(jī)器數(shù)實際生活中的數(shù)據(jù)除開無符號數(shù)以外,更多的是有符號數(shù)。比如:秋天溫度+12度,冬天溫度-5度。這些數(shù)據(jù)需要用符號來描述,其中的數(shù)據(jù):+12,-5,我們稱為“真值”,由于生活中采用十進(jìn)制,所以這兩個數(shù)據(jù)稱為十進(jìn)制真值。所謂“真值”

,就是生活中的真實數(shù)據(jù)。由于計算機(jī)采用二進(jìn)制處理數(shù)據(jù),所以上面兩個十進(jìn)制真值數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制真值分別為:(+12)10=(+1100)2(-5)10=(-101)2在計算機(jī)中我們對于“有符號數(shù)”

的約定為:正號(+)使用數(shù)字“0”來表示,負(fù)號(-)使用數(shù)字“1”來表示,同時規(guī)定符號位于二進(jìn)制數(shù)據(jù)的最高位。按照這種約定的數(shù)據(jù)能被計算機(jī)很好的處理,所以稱為“機(jī)器數(shù)”。2.原碼、反碼、補(bǔ)碼有符號數(shù)(機(jī)器數(shù))在計算機(jī)中有三種表示形式:原碼、反碼、補(bǔ)碼。(1)原碼原碼規(guī)則:用最高位表示數(shù)值的符號,其后各位用該數(shù)值的絕對值來表示。例題2.7求(+19)10的原碼解:首先把十進(jìn)制真值(+19)10

轉(zhuǎn)換成二進(jìn)制真值:(+19)10=(+10011)2用8位二進(jìn)制數(shù)(N=8)來表示它的原碼如下(最高位為符號位):例題2.8求(-15)10的原碼解:首先把十進(jìn)制真值(-15)10

轉(zhuǎn)換成二進(jìn)制真值:(-15)10=(-1111)2用8位二進(jìn)制數(shù)(N=8)來表示它的原碼如下(最高位為符號位)00010011100011118位二進(jìn)制數(shù)(N=8)能表示的最大原碼數(shù)值為:轉(zhuǎn)換成十進(jìn)制數(shù)就是:+(27-1)=+127。8位二進(jìn)制數(shù)(N=8)能表示的最小原碼數(shù)值為:轉(zhuǎn)換成十進(jìn)制數(shù)就是:-(27-1)=-127由此,我們可以得到,用8位二進(jìn)制數(shù)(N=8)表示的原碼數(shù)值范圍:-127~+127。如果寫出N位二進(jìn)制數(shù)表示的原碼數(shù)值范圍:-(2N-1-1)~+(2N-1-1)

0111111111111111(2)反碼反碼規(guī)則:正數(shù)的反碼和原碼相同。

負(fù)數(shù)的反碼為其原碼除開符號位以外的各位按位取反。例題2.9求(+19)10的反碼解:首先把十進(jìn)制真值(+19)10

轉(zhuǎn)換成二進(jìn)制真值:(+19)10=(+10011)2用8位二進(jìn)制數(shù)(N=8)來表示它的原碼如下(最高位為符號位):根據(jù)反碼規(guī)則,正數(shù)的反碼和原碼是相同的。所以(+19)10

的反碼如下:例題2.10求(-15)10的反碼解:首先把十進(jìn)制真值(-15)10

轉(zhuǎn)換成二進(jìn)制真值:(-15)10=(-1111)2用8位二進(jìn)制數(shù)(N=8)來表示它的原碼如下(最高位為符號位)0001001110001111根據(jù)反碼規(guī)則:負(fù)數(shù)的反碼為其原碼除開符號位以外的各位按位取反。故得出(-15)10的反碼如下:

注意:

8位二進(jìn)制數(shù)(N=8)反碼的數(shù)值范圍原碼數(shù)值范圍是相同的:-127~+127。

如果寫出N位二進(jìn)制數(shù)表示的反碼數(shù)值范圍為:-(2N-1-1)~+(2N-1-1)。(3)補(bǔ)碼補(bǔ)碼規(guī)則:正數(shù)的補(bǔ)碼和原碼相同。負(fù)數(shù)的補(bǔ)碼為其負(fù)數(shù)的補(bǔ)碼為其反碼在最低位加1。例題2.11求(+19)10的補(bǔ)碼解:首先把十進(jìn)制真值(+19)10

轉(zhuǎn)換成二進(jìn)制真值:(+19)10=(+10011)2用8位二進(jìn)制數(shù)(N=8)來表示它的原碼如下(最高位為符號位):

1111000000010011根據(jù)補(bǔ)碼規(guī)則:正數(shù)的補(bǔ)碼和原碼相同。所以(+19)10

的補(bǔ)碼如下:例題2.12求(-15)10的補(bǔ)碼解:首先把十進(jìn)制真值(-15)10

轉(zhuǎn)換成二進(jìn)制真值:(-15)10=(-1111)2用8位二進(jìn)制數(shù)(N=8)來表示它的原碼如下(最高位為符號位)根據(jù)反碼規(guī)則,負(fù)數(shù)的反碼為其原碼除開符號位以外的各位按位取反。故得出(-15)10的反碼如下:再根據(jù)補(bǔ)碼規(guī)則:負(fù)數(shù)的補(bǔ)碼為其反碼在最低位加1。最后得出(-15)10的補(bǔ)碼如下:111100018位二進(jìn)制數(shù)(N=8)能表示的最大補(bǔ)碼數(shù)值為(和原碼相同):轉(zhuǎn)換成十進(jìn)制數(shù)就是:+(27-1)=+127。8位二進(jìn)制數(shù)(N=8)能表示的最小補(bǔ)碼數(shù)值為:這個數(shù)值是一個特例,其中最高位即看成符號位(是一個負(fù)數(shù)),同時又看成數(shù)值位(權(quán)值為27)。轉(zhuǎn)換成十進(jìn)制數(shù)就是:-27

=-128由此,我們可以得到,用8位二進(jìn)制數(shù)(N=8)表示的補(bǔ)碼數(shù)值范圍:-128~+127。如果寫出N位二進(jìn)制數(shù)表示的補(bǔ)碼數(shù)值范圍:-2N-1

~+(2N-1-1)

100000003.補(bǔ)碼與原碼之間的轉(zhuǎn)換今天絕大多數(shù)計算機(jī)采用補(bǔ)碼設(shè)計算術(shù)運(yùn)算器電路,故稱為補(bǔ)碼計算機(jī)。在計算機(jī)研究中,常常會遇到已知補(bǔ)碼求原碼的情況。主要是因為負(fù)數(shù)的補(bǔ)碼不能直接看出它的二進(jìn)制值,必須轉(zhuǎn)換成原碼才能知道它的二進(jìn)制值。已知補(bǔ)碼求原碼的規(guī)則:(1)正數(shù)的補(bǔ)碼,其原碼等于補(bǔ)碼本身。(2)負(fù)數(shù)的補(bǔ)碼,其原碼為除開符號位以外將補(bǔ)碼的數(shù)值位按位求反后在末位加1。例題2.13已知某數(shù)(N=8)的補(bǔ)碼為:(01110110)2

求其原碼和它對應(yīng)的十進(jìn)制數(shù)。解:這是一個8位二進(jìn)制數(shù),最高位為符號位,符號位為0,表示該數(shù)是一個正數(shù),根據(jù)規(guī)則,正數(shù)的補(bǔ)碼,其原碼等于補(bǔ)碼本身,故得出其原碼為:這個二進(jìn)制數(shù)其對應(yīng)的十進(jìn)制數(shù)為:+11801110110例題2.14已知某數(shù)(N=8)的補(bǔ)碼為:(10010101)2

求其原碼和它對應(yīng)的十進(jìn)制數(shù)。解:這是一個8位二進(jìn)制數(shù),最高位符號位為1,表示該數(shù)是一個負(fù)數(shù)。根據(jù)規(guī)則,負(fù)數(shù)的補(bǔ)碼,其原碼為除開符號位以外將補(bǔ)碼的數(shù)值位按位求反后在末位加1。故得出其原碼為:這個二進(jìn)制數(shù)其對應(yīng)的十進(jìn)制數(shù)為:-107。例題2.15在采用8位二進(jìn)制(N=8)和16位二進(jìn)制數(shù)(N=16)時,請分別求(-21)10

的原碼、反碼、補(bǔ)碼。同時寫出相應(yīng)的十六進(jìn)制原碼、反碼、補(bǔ)碼。。解:(1)計算機(jī)采用8位二進(jìn)制(N=8)時。首先把十進(jìn)制真值(-21)10

轉(zhuǎn)換成二進(jìn)制真值:(-21)10=(-10101)2。求原碼:用8位二進(jìn)制數(shù)(N=8)來表示它的原碼如下(最高位為符號位):采用十六進(jìn)制表示為:95H1110101110010101求反碼:由于該數(shù)值為負(fù)數(shù),根據(jù)反碼規(guī)則,負(fù)數(shù)的反碼為其原碼除開符號位以外的各位按位取反。故得出(-21)10的反碼如下:采用十六進(jìn)制表示為:EAH求補(bǔ)碼:由于該數(shù)值為負(fù)數(shù),根據(jù)補(bǔ)碼規(guī)則,負(fù)數(shù)的補(bǔ)碼為其反碼加1。故得出(-21)10的補(bǔ)碼如下:采用十六進(jìn)制表示為:EBH(2)計算機(jī)采用16位二進(jìn)制(N=16)時。求原碼:用16位二進(jìn)制數(shù)(N=16)來表示(-21)10的原碼如下(最高位為符號位):

采用十六進(jìn)制表示為:8015H11101010111010111000000000010101求反碼:用16位二進(jìn)制數(shù)(N=16)來表示(-21)10的反碼如下(最高位為符號位):

采用十六進(jìn)制表示為:FFEAH求補(bǔ)碼:用16位二進(jìn)制數(shù)(N=16)來表示(-21)10的補(bǔ)碼如下(最高位為符號位):采用十六進(jìn)制表示為:FFEAH例題2.16已知兩個十六進(jìn)制數(shù)5CH、A7H,如果用8位二進(jìn)制(N=8)表示,請問它們分別看成無符號數(shù)時、有符號數(shù)原碼、補(bǔ)碼時對應(yīng)的十進(jìn)制數(shù)是多少?解:(1)第一個十六進(jìn)制數(shù)5CH首先把十六進(jìn)制數(shù)5CH轉(zhuǎn)換成二進(jìn)制:5CH=(01011100)2當(dāng)5CH表示為無符號數(shù):由于是無符號數(shù),所以每一位二進(jìn)制都是數(shù)值位,故直接把8位二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)即可:5CH=(01011100)2=(92)1011111111111010101111111111101011當(dāng)5CH表示為有符號數(shù)原碼:最高位符號位為0,所以這是個正數(shù),故直接把余下7位二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)即可:5CH=(01011100)2=(+92)10當(dāng)5CH表示為有符號數(shù)補(bǔ)碼:最高位符號位為0,所以這是個正數(shù),故直接把余下7位二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)即可:5CH=(01011100)2=(+92)10(2)第二個十六進(jìn)制數(shù)A7H首先把十六進(jìn)制數(shù)A7H轉(zhuǎn)換成二進(jìn)制:A7H=(10100111)2當(dāng)A7H表示為無符號數(shù):由于是無符號數(shù),所以每一位二進(jìn)制都是數(shù)值位,故直接把8位二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)即可:A7H=(10100111)2=(167)10當(dāng)A7H表示為有符號數(shù)原碼:最高位符號位為1,所以這是個負(fù)數(shù),余下的7位二進(jìn)制數(shù)值位代表的十進(jìn)制數(shù)值為:39。A7H=(10100111)2=(-39)10當(dāng)A7H表示為有符號數(shù)補(bǔ)碼:最高位符號位為1,所以這是個負(fù)數(shù),根據(jù)已知負(fù)數(shù)的補(bǔ)碼求原碼的規(guī)則:把A7H轉(zhuǎn)換為原碼后為:(11011001)2=(-89)102.3非數(shù)值型數(shù)據(jù)的表示方法2.3.1美國標(biāo)準(zhǔn)信息交換碼在初學(xué)ASCII碼時需要注意兩點:(1)標(biāo)準(zhǔn)ASCII碼使用7位二進(jìn)制數(shù)來表示西文字符,但是由于計算機(jī)中都以字節(jié)為單位存儲數(shù)據(jù),所以,輸入到計算機(jī)中的標(biāo)準(zhǔn)ASCII編碼實際上是8位二進(jìn)制數(shù)(1個字節(jié)),最高位補(bǔ)一個0。(2)在介紹某個字符的ASCII碼時,我們有時使用十進(jìn)制,有時使用二進(jìn)制,有時候又使用十六進(jìn)制。

比如,字母“A”的ASCII碼可以寫成:65(十進(jìn)制表示),41H(十六進(jìn)制表示),01000001(二進(jìn)制表示)三種表示形式,但真正輸入到計算機(jī)中存儲和處理的是二進(jìn)制編碼。十進(jìn)制描述是因為平時生活中我們習(xí)慣于十進(jìn)制;十六進(jìn)制描述是為了書寫方便。一個字符的ASCII碼有三種表示形式只是運(yùn)用的場合不同,其本質(zhì)都是一樣的。2.3.2漢字編碼計算機(jī)中漢字的表示也是采用二進(jìn)制編碼,同樣也是人為編碼。

1.外碼(輸入碼)外碼也叫輸入碼,是用來將漢字輸入到計算機(jī)中的一組鍵盤符號,不同的漢字輸入法就有不同的漢字輸入碼。常用的輸入碼有:拼音碼、五筆字型碼、自然碼、表形碼、區(qū)位碼和電報碼等。2.交換碼(國標(biāo)碼)每一個漢字都有了確定的二進(jìn)制代碼,中國標(biāo)準(zhǔn)總局1981年制定了中華人民共和國國家標(biāo)準(zhǔn)GB2312-80《信息交換用漢字編碼字符集--基本集》,即國標(biāo)碼。國標(biāo)碼規(guī)定:每個字符的二進(jìn)制編碼占有2個字節(jié),每個字節(jié)的最高位為0,每個字符對應(yīng)一個編碼。它共包括6763個常用漢字(其中一級漢字3755個,二級漢字3008個),英、俄、日文字母及其符號共687個。3.機(jī)內(nèi)碼“大”這個漢字的國標(biāo)碼是(0011010001110011)2,但是真正輸入到計算機(jī)中存儲的漢字代碼不是國標(biāo)碼,而是機(jī)內(nèi)碼。機(jī)內(nèi)碼和國標(biāo)碼的關(guān)系:機(jī)內(nèi)碼=國標(biāo)碼+(1000000010000000)2;

如果使用十六進(jìn)制表示則為:機(jī)內(nèi)碼=國標(biāo)碼+8080H2.4數(shù)的定點表示和浮點表示方法在計算機(jī)中,小數(shù)點不用專門的器件來表示,而是按照約定的方式來標(biāo)出。共有兩種約定方法表示小數(shù)點的存在,即定點表示和浮點表示。定點表示的數(shù)稱為定點數(shù),浮點表示的數(shù)稱為浮點數(shù)。2.4.1數(shù)的定點表示我們約定好小數(shù)點在某一個位置不動,以后所有的數(shù)小數(shù)點都按照這個位置來計算。從理論上而言,小數(shù)點可以約定在任何位置,只要計算機(jī)中所有的數(shù)都按照這個約定,一樣都可以計算。這種采用小數(shù)點固定的“定點數(shù)”計算機(jī)被稱為定點計算機(jī)。下面我們介紹兩種特別格式的定點數(shù):定點整數(shù)和定點小數(shù)。

1.定點整數(shù)定點整數(shù)的格式如下:Sf:表示數(shù)的符號位。S1S2S3S4……Sn:表示數(shù)值部分。小數(shù)點約定在Sn后,這樣這個數(shù)就實際上就只有整數(shù)部分,也就是純整數(shù),我們稱之為定點整數(shù)。2.定點小數(shù)定點小數(shù)的格式如下:Sf:表示數(shù)的符號位。S1S2S3S4……Sn:表示數(shù)值部分。小數(shù)點約定在Sf后,這個數(shù)就實際上就只有小數(shù)部分,整數(shù)部分的零,我們采用默認(rèn),不再占1位二進(jìn)制數(shù),這樣這個數(shù)就是一個純小數(shù),我們稱之為定點小數(shù)。SfS1S2S3S4…………Sn2.4.2數(shù)的浮點表示所謂“浮點數(shù)”是指小數(shù)點的位置可以浮動的數(shù)。例如一個十進(jìn)制數(shù):35.26=3.526×101=0.3526×102=0.03526×103結(jié)論:任何一個十進(jìn)制數(shù)N都可以表示成一個純小數(shù)和10的某次冪的乘積。同樣,一個二進(jìn)制數(shù):

11.0101=1.10101×21=0.110101×210=0.0110101×211結(jié)論:任何一個二進(jìn)制數(shù)N都可以表示成一個純小數(shù)和2的某次冪的乘積。通常,計算機(jī)中的浮點數(shù)用數(shù)學(xué)表達(dá)式來表示:N=S×Rj。式中,S稱為尾數(shù)(可以為正可以負(fù)),R稱為的基數(shù),j稱為階碼(可以為正可以為負(fù))。計算機(jī)采用二進(jìn)制,所以基數(shù)R=2是不變的,如果知道了尾數(shù)S和階碼j,就可以確定這個數(shù)的值。結(jié)論:任何一個二進(jìn)制數(shù)都可以用尾數(shù)和階碼的形式來表示,稱為二進(jìn)制數(shù)的浮點數(shù)表示形式。1.浮點數(shù)的表示形式計算機(jī)中浮點數(shù)的格式:計算機(jī)中規(guī)定:浮點數(shù)由階碼j和尾數(shù)S兩部份組成。階碼部分放在前面采用定點整數(shù),共m+1位;尾數(shù)部分放在后面采用定點小數(shù),共n+1位。jfj1j

溫馨提示

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

評論

0/150

提交評論