版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
緒論計算機基礎知識學習目標·計算機系統(tǒng)的基本組成·計算機中的信息表示·計算機指令、計算機語言及計算機程序設計的概念·操作系統(tǒng)的作用·二進制、八進制、十六進制以及它們的關系·計算機中各種信息的編碼
1一臺計算機是由以下幾個主要硬件組成(如下圖所示):輸入設備
輸出設備
內存
通信設備
存儲設備
中央處理器CPU總線這些組件通過一個稱為“總線(bus)”的子系統(tǒng)連接,總線負責在這些組件之間傳輸數(shù)據(jù)和控制信號。(二)計算機的硬件系統(tǒng)1. 計算機硬件結構22. 計算機的主要部件及其功能(1)中央處理器(CentralProcessingUnit,CPU,“芯片”)它是計算機的大腦。它從內存中獲取指令然后執(zhí)行這些指令。cpu通常由兩個部分組成:控制單元(controlunit,CU)——“控制器”和算術/邏輯單元(arithmetic/logicunit,ALU)——“運算器”。CU用于控制和協(xié)調除cpu之外的其他組件的動作;ALU用于完成數(shù)值運算(加、減、乘、除)和邏輯運算(比較或判斷)。CPU的工作速度,較常見的芯片為2GHZ(可達到2億條指令/每秒)(1HZ相當于1個脈沖周期/秒;1KHZ=1000HZ;1MHZ=1000KHZ;1GHZ=1000MHZ;)(假設執(zhí)行1條指令需要10HZ,即10個脈沖周期;則2GHZ可達到2億條指令/每秒)3cpu中“運算器”的內部結構,如下圖所示:輸出門加法器輸入選擇門通用寄存器組AXBXPC......輸入選擇門4(2)內存(memory)
用于存放CPU當前正在執(zhí)行的程序和處理的數(shù)據(jù)。它是一種可以與CPU直接交換信息的存儲器。內存..010010100110000101110110011000010011011000000110.字符‘J’字符‘a’字符‘v’字符‘a’字符‘6’整數(shù)6內存地址..200020012002200320042005. 內存利用電的兩種狀態(tài):關(off)和開(on),習慣上把它們分別當做
0
和1。這些0和1被解釋為二進制數(shù)字系統(tǒng)中的數(shù),并通常被稱為“比特”(bit,二進制數(shù))。cpu要執(zhí)行的指令以及各種類型的數(shù)據(jù)(數(shù)字、字符、字符串等),都被編碼為某種約定的比特(0、1)序列存儲在內存中。 在內存中,字節(jié)是最小的存儲單元。內存其實是一個由字節(jié)組成的線性空間,每個字節(jié)都有一個唯一的地址(內存地址)。每個字節(jié)(byte)能存儲8個比特。說明1:由于計算機是以字節(jié)為單位來分配內存的,所以,如果一個字節(jié)存放不下一個大數(shù)字,那么,計算機就會分配幾個地址相鄰的字節(jié)來存放之。說明2:內存字節(jié)中的內容永遠非空,但其原始內容可能對你的程序無意義。一旦新的信息被存入字節(jié),該字節(jié)中原來的內容將會丟失!說明3:程序中各種數(shù)據(jù)的編碼都是由系統(tǒng)根據(jù)編碼表來自動完成的(例如,在流行的ASCII編碼表中,字符‘J’是用一個字節(jié)01001010來表示的)。內存字節(jié)及其內容5計算機中存儲器的大小通常被稱為“容量”,并且以字節(jié)(簡寫為B)、千字節(jié)(KB)、兆字節(jié)(MB)、千兆字節(jié)(GB)、萬億字節(jié)(TB)為計量單位: 1KB(kilobyte)=
1024B
(byte) 1MB(megabyte)=
1024KB(kilobyte) 1GB(gigabyte)=
1024MB(megabyte) 1TB(kilobyte)=
1024GB(gigabyte)其中,1024=210
。62)隨機存取存儲器(RandomAccessMemory,RAM)1)只讀存儲器(ReadOnlyMemory,ROM)在物理上,內存實際上是由以下兩部分組成的: 其特點是:斷電后,其中數(shù)據(jù)不會丟失?,F(xiàn)代微機的主板上都裝有ROM,并在其中固化了一個“基本輸入輸出系統(tǒng)”——BIOS,其功能是:
(i)每當計算機啟動時,完成對系統(tǒng)的加電自檢。
(ii)對系統(tǒng)中各種功能模塊進行初始化。
(iii)引導操作系統(tǒng)。
(iv)為操作系統(tǒng)提供基本輸入輸出設備的驅動程序(鍵盤、顯示器、打印機、時鐘、揚聲器、軟盤、硬盤和光盤)。
RAM
就是通常所說的“內存”。其特點是:一旦斷電,其中的信息將會丟失。它被用來存放當前正在執(zhí)行的程序和數(shù)據(jù)。
7(3)存儲設備(store) 內存是不能長久保存數(shù)據(jù)的,因為斷電時信息就會丟失。程序和數(shù)據(jù)都應該被永久地存放在存儲設備上,當計算機確實需要使用它們時再裝入內存。因為從內存讀取數(shù)據(jù)要比存儲設備快得多!所以,store也叫做“外存”(外部存儲器),或叫做“輔存”(輔助存儲器)。而內存則通常被叫做“主存”。 存儲設備主要有以下幾種: 磁盤驅動器 光盤驅動器 磁帶驅動器
USB閃存驅動器說明:驅動器(drive)是對存儲介質進行讀、寫操作的設備。例如,磁盤、光盤、磁帶等都是存儲介質。8*關于計算機的存儲體系:在現(xiàn)代計算機系統(tǒng)中,通常采用三級存儲體系。如下圖所示:CPU緩存(cache)主存(memory)外存(store)·一級存儲器——緩存(cache)一種工作速度與CPU相匹配的存儲器,價格較昂貴。用于存放CPU當前正在執(zhí)行的那部分指令和數(shù)據(jù)。通常被設計在CPU
的內部(容量為2~16MB)。·二級存儲器——主存(memory) 一種工作速度低于CPU的存儲器(又稱內存),價格不太昂貴。用于存放CPU當前正在執(zhí)行的程序和數(shù)據(jù)(容量為2~3GB)?!と壌鎯ζ鳌獯妫╯tore)一種工作速度遠低于CPU的存儲器,價格較低廉。用于存放CPU當前不使用的程序和數(shù)據(jù)(80~250GB)。最新的緩存技術在緩存內部再分成二~三級。在擁有三級緩存的CPU中,只有約5%的數(shù)據(jù)需要從內存中調用,這進一步提高了CPU的效率。9(4)輸入設備(Inputdevices)接收用戶輸入的程序和原始數(shù)據(jù),并將它們轉變?yōu)橛嬎銠C能識別的形式(二進制代碼)存放到內存中。常用的輸入設備有:鍵盤、鼠標、掃描儀、光筆等。(5)輸出設備(Outputdevices)將內存中計算機的處理結果(二進制代碼)轉變?yōu)槿藗兯芙邮艿男问?。常用的輸出設備有:顯示器、打印機、繪圖儀等。(6)通信設備(Communicationequipment)計算機可以通過通信設備進行聯(lián)網。常用的通信設備有:調制解調器(Modem)、網絡接口卡(NIC)等。10(三)計算機的軟件系統(tǒng)1. 程序硬件僅是計算機得以運算的基礎。要使計算機能具有運算和控制功能,還必須配置必要的計算機軟件(software)——計算機程序(program)。程序:發(fā)給計算機的一組指令 ——可以讓計算機執(zhí)行并完成所需任務的一個指令序列。指令:告訴計算機該做一個什么操作的操作命令(也叫做代碼)。(1)指令系統(tǒng)(Instructionset)最初植入計算機的一套機器指令集——機器語言由于計算機只能理解用0和1編寫的機器指令,因此,機器語言其實就是一套機器指令集及其語法規(guī)則。11下面顯示了一段用機器語言編寫的程序:010000110110000000110111000100101100011000001110111001111001001110000011100001110010001000110注意:機器語言因CPU類型而異!12輸出門加法器輸入選擇門通用寄存器組AXBXPC......輸入選擇門AXBXcpu中“運算器”的內部結構,如下圖所示:“運算器”進行算術/邏輯運算的工作過程是:先從內存中將待處理的數(shù)據(jù)取至某些寄存器中,然后再將寄存器中的數(shù)據(jù)送入加法器并完成運算。13(2)指令的執(zhí)行過程內容....11011010100110101011011001001101.....某指令的第一個字節(jié)第二個字節(jié)某指令的第一個字節(jié)第二個字節(jié)...地址..8000800180028003...PCPCPC:ProgramCounter程序計數(shù)器:存放下一條指令的內存地址PC是CPU中的一個專用寄存器。每條指令的執(zhí)行過程,可分為以下兩個階段:(i)取指階段——CPU從PC所指的內存地址中取出將要執(zhí)行的指令;(ii)執(zhí)行階段——CPU對該指令首先進行分析、譯碼、判斷所要完成的操作,然后向相應的功能部件發(fā)出控制信號。最后,由這些功能部件去完成相應的操作。(3)程序的執(zhí)行過程 按程序(已存放在從某個字節(jié)開始的內存中)中指令的排列順序,從第一條指令開始,重復上述步驟。10110110010011011101101010011010然后,PC指向下一條指令。142.匯編語言(assemblylanguage)
比機器語言稍先進的程序設計語言是匯編語言。以下顯示了一段用匯編語言編寫的程序:mainprocpay movax,dseg movax,0b00h addax,da moval,bl mulbi,ax movbl04h15匯編語言源程序文件機器語言目標文件執(zhí)行執(zhí)行結果匯編器
匯編語言允許程序員在程序中采用助記符,而不是用0和1以“簡化”工作。助記符是一種輔助記憶的方法,這里指采用字母的縮寫來代表指令。例如,用助記符add來代表加法操作、mul代表乘法操作、mov代表將數(shù)據(jù)從內存的一處移動到另一處。由于計算機只能識別機器語言,所以,需要一個“匯編器”負責將匯編語言指令轉換成機器代碼:163.高級語言(high-levellanguage)
高級語言允許程序員使用類似英語的程序指令。下面顯示了一段用BASIC語言編寫的程序:input"Entername";nameinput"Enterhoursworked";hoursinput"Enterpayrate";rategrossPay=hours*ratefederalTax=0.2*grossPaysocSecTax=0.07*grossPaystateTax=0.06*grossPaynetPay=grossPay-federalTax-socSecTaxprintname,netPayend
高級語言的程序指令很像英語,即使讀者不懂BASIC語言,也不難理解上面的程序是在一步一步地指示計算機如何計算并顯示出員工的凈工資。17有一百多種高級語言,每一種都是為特定目的而設計的。最著名的有:COBOL(面向商業(yè)的通用語言)FORTRAN(面向數(shù)值計算)BASIC(易學易用)PASCAL
(面向教學)C
(具有匯編語言功能的高級語言)C++(適用于系統(tǒng)軟件開發(fā))Java(適用于互聯(lián)網應用程序)18機器語言文件高級語言源程序文件編譯器鏈接器庫代碼可執(zhí)行文件(.exe)由于計算機同樣不能理解高級語言,因此需要使用一個稱為“編譯器”的程序將源程序(或稱為“源代碼”)翻譯成機器語言程序。194. 操作系統(tǒng)操作系統(tǒng)硬件應用程序用戶操作系統(tǒng)的主要任務有:·控制和監(jiān)控系統(tǒng)的活動·分配和調遣系統(tǒng)資源·安排各程序的操作順序
操作系統(tǒng)(OperatingSystem,OS)是運行在計算機上最重要的程序,它是運行在計算機硬件上的第一個程序——負責管理和控制計算機的活動。比較流行的操作系統(tǒng)有MSWindows、MacOS、Linux。如果沒有操作系統(tǒng),像IE、Word、vc++這樣的應用程序就不能運行。硬件、操作系統(tǒng)、應用程序和用戶之間的關系如圖所示:20操作系統(tǒng)的基本概念(1)操作系統(tǒng)的定義(2)操作系統(tǒng)的基本功能
(1)操作系統(tǒng)的定義操作系統(tǒng)是一個大型的程序系統(tǒng),它負責計算機的全部軟、硬件資源的分配、調度工作,控制協(xié)調多個任務的活動,實現(xiàn)信息的存取保護,并提供用戶接口,使用戶獲得良好的工作環(huán)境。操作系統(tǒng)使整個計算機系統(tǒng)實現(xiàn)了高效率和高度自動化。(2)操作系統(tǒng)的基本功能1)存儲器管理的功能2)處理機管理的功能3)設備管理的功能4)文件管理的功能1)存儲器管理的功能內存分配內存分配的主要任務是為每道程序分配內存空間,但要以存儲器利用率最高、減少不可用的內存空間為準則,同時允許正在運行的程序申請附加的內存空間,以適應程序和數(shù)據(jù)動態(tài)增長的需要。內存保護
內存保護的主要任務是確保每道用戶程序在自己的內存空間中運行,互不干擾,也就是說絕不允許用戶程序訪問操作系統(tǒng)和其他用戶的程序和數(shù)據(jù)。
地址映射一個應用程序經編譯后,通常會形成若干個目標程序,這些目標程序再經過鏈接而形成可執(zhí)行程序。內存擴充由于物理內存的容量有限,難以滿足用戶的需要,存儲器管理的任務就是在不增加物理內存的條件下,借助于虛擬內存技術從邏輯上去擴充內存容量,使用戶所感覺到的內存容量比實際內存容量大得多。2)處理機管理的功能處理機管理的主要任務是對處理機進行分配,并對其運行進行有效的控制和管理。在多道程序環(huán)境下,處理機的分配和運行都是以進程為單位,所以對處理機的管理可理解為對進程的管理。進程控制進程同步進程通信
CPU調度3)設備管理的功能緩沖管理為達到緩解CPU和I/O設備速度不匹配的矛盾,達到提高CPU和I/O設備利用率,提高系統(tǒng)吞吐量的目的,許多操作系統(tǒng)通過設置緩沖區(qū)的辦法來實現(xiàn)。
設備分配設備分配的基本任務是根據(jù)用戶的I/O請求,為他們分配所需的設備。如果在I/O設備和CPU之間還存在設備控制器和通道,則還需為分配出去的設備分配相應的控制器和通道。設備處理設備處理程序又稱設備驅動程序。其基本任務是實現(xiàn)CPU和設備控制器之間的通信。
設備獨立性和虛擬設備用戶向系統(tǒng)申請和使用的設備與實際操作的設備無關
4)文件管理的功能文件存儲空間的管理目錄管理文件的操作返回本節(jié)《習題1.1》(1)計算機硬件和軟件的定義。(2)計算機的主要組件及它們的作用。(3)計算機中為什么只能使用0、1。(4)bit(比特,二進制位)、byte(字節(jié))的概念。(5)內存的作用及特點;內存地址的概念。(6)外存的作用及特點。(7)存儲器容量的幾種計量單位。(8)指令及其執(zhí)行過程;程序及其執(zhí)行過程。(9)機器語言、匯編語言、高級語言的特點。(10)什么叫源程序?什么叫編譯器?(11)操作系統(tǒng)的特點及其主要任務。(12)存儲器管理、處理機管理、設備管理、文件管理的功能。301.2計算機中數(shù)據(jù)的表示——數(shù)據(jù)編碼的概念前面我們簡單介紹了計算機中控制信息的表示——指令的編碼。其實,在計算機中,任何信息都是以計算機能夠識別的形式出現(xiàn)的。下面我們再來介紹數(shù)據(jù)信息在計算機中的表示。在計算機中,各種信息都必須經過數(shù)字化編碼——轉換成某種二進制代碼后才能被處理。因此,理解信息編碼及其處理技術將是至關重要的。·編碼:采用少量的基本符號并選用一定的組合原則(編碼的兩大要素),以表示大量復雜多樣的信息。編碼在人類的生活中無所不在。例如,可以用10個阿拉伯數(shù)碼作為基本符號來組合表示任何數(shù)字;又如,可以用26個英文字母作為基本符號來組合表示任何英語詞匯。
31·二進制編碼 在計算機中,任何信息的編碼所采用的基本符號都是二進制數(shù)碼:0、1。究其原因:
1)二進制數(shù)碼在物理上最容易實現(xiàn)。如,電壓的高低、脈沖的有無,都可以方便地用來表示0或1。
2)用二進制數(shù)碼表示數(shù)時,其編碼以及運算規(guī)則都比較簡單。
3)二進制數(shù)碼的0、1恰好與邏輯命題的兩個值“是”/“否”、“真”/“假”相對應。使計算機便于實現(xiàn)邏輯運算。32(一)數(shù)值的編碼
計算機采用以2為“基數(shù)”的“進位計數(shù)制”。1. 二進制數(shù)(Binary)
如同十進制數(shù)256的大小是如下計算的那樣
“二進制計數(shù)制”:(1)只有兩個數(shù)碼0和1;(2)逢2進1;(3)數(shù)中每位數(shù)字的大小等于該位上的數(shù)碼乘以相應的“權”。一個二進制數(shù)11001011的大小也是“各位數(shù)碼按權展開再相加”。1×27+1×26+0×25+0×24+1×23+0×22+1×21+1×20
=
128+64+0+0+8+0+2+1
=
203
2×102+5×101+6×100
=
2×100+5×10+6×1
=
200
+
50
+
6
=
256二進制轉換成十進制的方法332. 十進制到二進制的轉換除數(shù)
商余數(shù)
2
|300低位
2
|
15
1
2
|7
1
2
|
31
2
|
11
高位
0
說明:
計算機中有一個數(shù)制轉換程序:會自動將源程序中的十進制數(shù)轉換成二進制數(shù)。下面是“二進制/十進制對照表”。采用“除2取余法”。其具體方法如下:把一個十進制數(shù)不斷除以2,記下余數(shù);如此重復,直到商為0為止。
最后將所得余數(shù)逆向排列便是對應的二進制值。
例如,(30)10的轉換過程如左圖,將余數(shù)按由高到低順序排列,即得其結果:11110
34二進制十進制001110211310041015110611171000810019......11111510000168位二進制數(shù)最多可以表示256個數(shù)(28個數(shù));試問:9位、10位二進制數(shù)分別最多可以表示多少個數(shù)?二進制十進制......10000032......100000064......10000000128......11111111255353. 八進制和十六進制的概念八進制及十六進制的出現(xiàn),主要是為了方便二進制數(shù)的表示,因為,二進制數(shù)表示起來比較冗長。(1)八進制(Octal)基數(shù)為8;有8個數(shù)碼:0、1、2、3、4、5、6、7;逢8進1。一個八進制數(shù)2307的大小也是各位數(shù)碼按權展開再相加。
2×83
+3×82
+0×81+7×80 =
512+192+0+7
=
71136(2)十六進制(Hex)一個十六進制數(shù)4AF的大小也是各位數(shù)碼按權展開再相加。
4×162+10×161+15×160 =
1024+160+15
=
1199基數(shù)為16;
16個數(shù)碼:
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F;進位規(guī)則:逢16進1。37(3)十進制到八進制的轉換采用“除8取余法”。其具體方法如下:把一個十進制數(shù)不斷除以8,記下余數(shù);如此重復,直到商為0為止。
最后將所得余數(shù)逆向排列便是對應的八進制值。
例如,(30)10的轉換過程如左圖,將余數(shù)按由高到低順序排列,即得其結果:36
商余數(shù)8|308|36
低位
03高位
38(4)十進制到十六進制的轉換采用“除16取余法”。其具體方法如下:把一個十進制數(shù)不斷除以16,記下余數(shù);如此重復,直到商為0為止。
最后將所得余數(shù)逆向排列便是對應的十六進制值。
例如,(30)10的轉換過程如左圖,將余數(shù)按由高到低順序排列,即得其結果:1E
商余數(shù)16|3016|1E(14)
低位
01高位
下面是“十進制/二進制/八進制/十六進制對照表”。39十進制二進制八進制十六進制000011112102231133410044510155611066711177810001089100111910101012A11101113B12110014C十進制二進制八進制十六進制13110115D14111016E15111117F1610000201017100012111............3111111371F321000004020331000014121............63111111773F64100000010040............40(5)二進制到八進制的轉換其具體方法是:將二進制數(shù)從低位到高位,每3位分成一組,最高位不足3位補0。然后,每一組用一個八進制數(shù)碼表示。例如,(11001)2的轉換過程如下:
(011,001)→(3,1)→(31)8其十進制數(shù)為25.
(6)二進制到十六進制的轉換其具體方法是:將二進制數(shù)從低位到高位,每4位分成一組,最高位不足4位補0。然后,每一組用一個十六進制數(shù)碼表示。
例如,(11001)2的轉換過程如下:
(0001,1001)→(1,9)→(19)16
其十進制數(shù)為25.
3位二進制數(shù):000~111最多只能表示1位八進制數(shù):0~7因為:log28=34位二進制數(shù):0000~1111最多只能表示1位十六進制數(shù):0~F因為:log216=441十進制二進制八進制十六進制000011112102231133............711177810001089100111910101012A............14111016E15111117F
16100002010二進制與八進制二進制與十六進制42(8)十六進制到二進制的轉換其具體方法是:依次將一個十六進制數(shù)中的每1位用4位二進制數(shù)碼表示之即可。例如,(1E)16的轉換過程如下:
(1,E)→(0001,1110)→(00011110)
→(11110)2其十進制為30.(7)八進制到二進制的轉換其具體方法是:依次將一個八進制數(shù)中的每1位用3位二進制數(shù)碼表示之即可。例如,(36)8的轉換過程如下:
(3,6)→(011,110)→(011110)
→(11110)2
其十進制為30.
說明:八進制、十六進制只是人們?yōu)榱吮阌诒硎径M制而使用的兩種方式。與十進制一樣,計算機并不認識它們!所以,系統(tǒng)內部通常都會提供將二進制轉換成八進制和十六進制的轉換程序.43表示該數(shù)是一個正數(shù)表示該數(shù)是一個負數(shù)例如,4.
關于數(shù)值的符號由于計算機中的任何信息都是用二進制(編碼)來表示的。因此,在計算機內部,數(shù)值的符號(即,正號+、負號-)也是用二進制來表示的。其方法是:將每個二進制數(shù)的最高位規(guī)定為“符號位”——用于表示該數(shù)值的符號:0表示正號;1表示負號。0
……高位低位1
……高位低位并采用一種被稱為“補碼”的編碼規(guī)則,對帶符號的整數(shù)進行編碼。44在補碼系統(tǒng)中,凡正整數(shù),其符號位后面的編碼就是該數(shù)的“原碼”——該數(shù)絕對值的二進制表示。例如,下面這個8位(一個字節(jié))的補碼
表示的整數(shù)為:+127。然而,對于負整數(shù),符號位后面的編碼是該數(shù)的“補碼”——該數(shù)的“原碼”取反后(“反碼”)加1。例如,下面這個8位的補碼表示的整數(shù)為:-1。0
1
1
1
1
1
11
高位低位7
6
5
4
3
2
10提示:一個n位補碼的整數(shù),由于符號位占用了1位,因此,該整數(shù)的二進制有效位只有n-1位!1
1
1
1
11
11
高位低位7
6
5
4
3
2
10獲取負數(shù)的n位編碼(即補碼)的步驟如下:i)
獲取原碼——取該負數(shù)絕對值的n位二進制值;ii)獲取反碼——將上述原碼中的各位取反;iii)
獲取補碼——將上述反碼加1;45 例如,-1的8位補碼的獲取過程如下:i)-1的絕對值是1,其8位二進制值是10000001(叫做“原碼”);ii)10000001的“反碼”是11111110;(取反時符號位不變?。﹊ii)加1后得11111111(“補碼”);獲取負數(shù)n位編碼的方法:i)獲取原碼——取該負數(shù)絕對值的n位二進制值;ii)獲取反碼——將上述原碼取反;iii)獲取補碼——將上述反碼加1; 再如,-36的8位補碼的獲取過程如下:i)-36的絕對值是36,其8位二進制值是10100100(原碼);ii)10100100的反碼是11011011;iii)加1后得到補碼是11011100;46 對于由0開頭的補碼,其原值的獲取過程很簡單:將符號位后面的n-1位二進制直接轉換為十進制,即得該數(shù)的原值!由補碼獲取原值的步驟:i)獲取反碼——將其編碼取反;ii)獲取原碼——將上述反碼加1;iii)如果其編碼的符號位為1,則為負數(shù)。 反之,一個n位補碼的原值又是如何獲取的呢? 方法是:與獲取補碼的過程相反——對補碼取反、加1!下面以一個8位補碼11101101為例,來觀察其原值的獲取過程:i)將其補碼11101101取反,得反碼:00010010;ii)將上述反碼加1得其原碼:00010011;由此可知,該補碼的原值的絕對值為19。iii)由于該補碼的符號位為1,因此,該數(shù)的原值是-19。47帶符號整數(shù)的8位二進制編碼十進制000000000000000011000000102000000113000001004000001015000001106000001117000010008......011111111278位(一個字節(jié))補碼最多可以表示256個帶符號整數(shù):-128~127帶符號整數(shù)的8位二進制編碼十進制10000000-12810000001-12710000010-126......11111110-211111111-14816位(兩個字節(jié))補碼最多可以表示65536個帶符號整數(shù):-32768~32767帶符號整數(shù)的16位二進制編碼十進制000000000000000000000000000000001100000000000000102......00000000000001004......00000000111111112550000000100000000256.....010000000000000016384......011111111111111132767帶符號整數(shù)的16位二進制編碼十進制1000000000000000-327681000000000000001-32767......1111111111111110-21111111111111111-1495.關于數(shù)值的范圍和溢出問題 由于計算機是通過預先設計好的固定硬件來處理二進制數(shù)的,因此,它所能處理的二進制數(shù)的位數(shù)是有限的——稱為“有效位”或“數(shù)值范圍”。 通常計算機中采用的有效位有:8位(1個字節(jié),其整數(shù)的有效數(shù)為|27-1|);16位(2個字節(jié),其整數(shù)的有效數(shù)為|215-1|);32位(4個字節(jié),其整數(shù)的有效數(shù)為|231-1|)等。由于整數(shù)都使用固定個數(shù)的位進行存儲,所以,當一次整數(shù)運算產生的值超出了有效位時,將導致該值“溢出”。下面以8位補碼為例:01111111(+127)+00000011(+3)-----------------------------10000010(-126)10001000(-120)+11101111(-17)-----------------01110111(+119)同號相加的結果,若其符號位與兩個加數(shù)的符號位不同,則為溢出!提醒:數(shù)據(jù)的溢出是悄悄發(fā)生的,計算機不進行運行時檢查。預測數(shù)值的范圍并為之分配合適的大小以免溢出,完全是程序員的責任!異號相加永不溢出!高位如有進位將被丟棄!50(二)非數(shù)值數(shù)據(jù)的編碼非數(shù)值數(shù)據(jù)是指:字符(包括字母、數(shù)字、各種特殊符號)、邏輯值等數(shù)據(jù)。在這里,我們僅介紹字符、邏輯值的編碼。邏輯值數(shù)據(jù)邏輯數(shù)據(jù)是指用于邏輯運算的數(shù)據(jù)。它們只有兩個值:“真”和“假”,或者“是”和“非”。它們的編碼沒有統(tǒng)一的規(guī)定,一般可由其應用環(huán)境來決定:最簡單的方法,只使用一個二進制位(bit)來表示它們:
0表示“真”;1表示“假”。但是,通常還是使用一個16或32個二進制位s來表示它們:
0表示“真”;1表示“假”。例如,C、C++使用4個字節(jié)(32位)來表示它們; 而Java語言則用2個字節(jié)(16位)來表示它們的。512. 字符數(shù)據(jù) “字符”數(shù)據(jù)通常是指:用于文本(即文字)處理的數(shù)據(jù)。 它們包括各種文字及標點符號。 目前流行的字符編碼有兩種:ASCII碼、Unicode碼。(1)ASCII碼
·概念 這是一種稱為“美國信息交換標準碼”的用于英文字符的編碼。這種編碼共收集了128種英文及標點符號字符(參見ASCII編碼表)。它是一種采用7位二進制的編碼(最多可表示27=128種字符)。 例如, 1000001——字符A的編碼 1000010——字符B的編碼 1100001——字符a的編碼 1100010——字符b的編碼52說明:由于二進制數(shù)的表示比較冗長,因此,在編碼表中通常使用十進制或十六進制等方式來表示之。例如,字符A其編碼是 1000001其十進制數(shù)為65其八進制為 101其十六進制為4153·具體實現(xiàn) 由于ASCII編碼表采用7位二進制編碼,所以在計算機中需要用一個字節(jié)(8位二進制)來保存。其中,最高位用于奇偶校驗位(程序員不必理會它?。@?,在一個字節(jié)中,字符A的編碼是01000001(相當于十進制數(shù)為65、八進制為101、十六進制為41);字符B的編碼是01000010(相當于十進制數(shù)為66、八進制為102、十六進制為42);·常用字符(需要熟記)在ASCII編碼表中,常用字符及其編碼對應如下:空格——00100000(其十進制值為32);數(shù)字字符‘0’~‘9’——00110000~00111001(其十進制值為48~57);大寫英文字母A~Z——01000001~01011010(其十進制值為65~90);小寫英文字母a~z——01100001~01111010(其十進制值為97~112);(大小寫英文字母對應的編碼相差32!這一點在以后編程時有用)提醒:ASCII碼是一種用于英文字符集的編碼,因此,它不能用于漢字!54(2)Unicode編碼
Unicode碼(“統(tǒng)一碼”),一種可以表示世界上所有書面語言中字符的編碼。它被設計為16位編碼(最多可以表示65536個字符)。因此,在計算機中,它需要占用2個字節(jié)。為便于區(qū)別,其編碼通常以\u開頭的4位十六進制數(shù)表示:\u0000~\uFFFF。例如,中文的“歡迎”兩個字符的編碼是,\u6B22和\u8FCE。Unicode碼收錄了ASCII碼(用于表示128個英文及標點符號字符),其編碼從\u0000~\u007F(Unicode編碼表中的前128個字符)。例如,英文字符“A”,其Unicode碼值則是\u0041,如下所示:
00
10
0
01
0
01
1
01
01
16
B
2
2“歡”的Unicode碼
01
0
0
0
0
0
1
00
0
00
00
0
0
0
4
155(3)漢字編碼漢字在計算機中的編碼問題,將涉及到三個編碼:輸入碼、機內碼和字形碼。1)輸入碼利用標準鍵盤上的鍵(即,英文字母和數(shù)字等鍵)來進行漢字輸入。這種由英文字母和數(shù)字組成的、用于漢字輸入的編碼方案被稱為“漢字的輸入碼”。常用的漢字輸入碼有:①拼音碼:以漢語拼音字母為基礎的編碼。②字形碼:由漢語字形確定的編碼。如,“五筆字形”等。③形音碼:字形與拼音的組合。如,“首尾碼”。④數(shù)字碼:由數(shù)字組成的漢字編碼。如,“區(qū)位碼”、“國標碼”。56“區(qū)位碼”:它將國家標準局公布的6763個漢字分成94個區(qū)(從1開始編號,稱為“區(qū)碼”),每個區(qū)又分成94個位(從1開始編號,稱為“位碼”)?!皡^(qū)碼”和“位碼”的順序連接就是“區(qū)位碼”。如,漢字“萬”的“區(qū)位碼”是45,
82(2DH,52H),占2個字節(jié)。 區(qū)位碼可以如下所示:萬位碼1
…82
…94區(qū)碼1
.
.
45
.
.
9457“國標碼”:它是從“區(qū)位碼”演變而來的:分別在“區(qū)碼”和“位碼”上各加是32,即加上20H
。那么,“萬”的“國標碼”則是77,114(4DH,72H或4D72H)。
0
0
1
0
1
1
0
1
0
1
01
0
0
1
0
2
D
5
2例如,“萬”的“區(qū)位碼”是45,82(2DH,52H)。
01
0
0
1
1
0
1
0
11
1
0
0
1
0
4
D7
2582)機內碼無論你使用哪一種漢字輸入碼來輸入漢字,然而,這些輸入法最終都會將你所輸入的漢字轉換成一種統(tǒng)一的編碼,然后再將它們存儲到計算機的存儲器中。這種統(tǒng)一的編碼就是漢字的“機內碼”。漢字的“機內碼”與英文字符的“機內碼”ASCII碼(只需占用一個字節(jié)且最高位為0)的存儲有所不同。漢字的“機內碼”需要占用兩個連續(xù)的字節(jié)來存儲: 第一個字節(jié)存放其“國標碼”的高2位十六進制; 第二個字節(jié)存放其“國標碼”的低2位十六進制; 并且將這兩個字節(jié)的最高位都置“1”。提醒:將漢字機內碼中兩個字節(jié)的最高位置1,以便于區(qū)別ASCII碼!
59由上可知,一個漢字的“機內碼”需要占用兩個字節(jié):第一個字節(jié)存放“國標碼”的高2位十六進制;第二個字節(jié)存放“國標碼”的低2位十六進制;最后將這兩個字節(jié)的最高位都置“1”。
0
1
0
0
1
1
0
1
0
1
1
1
0
0
1
0
4
D7
2
例如,“萬”字的國標碼是4D72H,如下圖所示:
那么,它的機內碼就是:CDF2H(4D72H+8080H)。
1
1
0
0
1
1
0
1
1
1
1
1
0
0
1
0
C
D
F
2這一位由0變160Unicode與機內碼的問題:Unicode其實只是一個符號集,它只規(guī)定了符號的二進制代碼,卻沒有規(guī)定這個二進制代碼應該如何存儲。也就是說,它并非最終的機內碼。它還需要操作系統(tǒng)將它轉換為本地的機內碼。通常,Unicode中的一個英文標點符號的“機內碼”都是采用一個由0開頭的字節(jié)來存儲;而
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版工程機械設備租賃與技術創(chuàng)新服務合同3篇
- 二零二五版護林員勞動合同書編制指南3篇
- 二零二五版按揭購房合同:智能家居系統(tǒng)智能家居系統(tǒng)節(jié)能改造合同3篇
- 二零二五年度游戲公司代運營及運營支持合同3篇
- 二零二五版包雪服務項目風險評估與預案合同3篇
- 二零二五年度餐飲配送企業(yè)食品安全責任追究合同3篇
- 二零二五版海洋工程高低壓配電系統(tǒng)安裝合同2篇
- 二零二五版小微企業(yè)貸款合同與信用增級服務協(xié)議3篇
- 二零二五年度海洋工程設備采購合同15篇
- 二零二五年黃豆種植戶風險管理采購合同3篇
- MT/T 199-1996煤礦用液壓鉆車通用技術條件
- GB/T 6144-1985合成切削液
- GB/T 10357.1-2013家具力學性能試驗第1部分:桌類強度和耐久性
- 第三方在線糾紛解決機制(ODR)述評,國際商法論文
- 公寓de全人物攻略本為個人愛好而制成如需轉載注明信息
- 第5章-群體-團隊溝通-管理溝通
- 腎臟病飲食依從行為量表(RABQ)附有答案
- 深基坑-安全教育課件
- 園林施工管理大型園林集團南部區(qū)域養(yǎng)護標準圖例
- 排水許可申請表
- 低血糖的觀察和護理課件
評論
0/150
提交評論