全國計算機等級考試四級復習綱要
把十進制小數乘以2,取其積的整數部分作對應二進制小數的最高位系數k -1 再取積的純小數部分乘以2,新得積的整數部分又作下一位的系數k -2 ,再取其積的純小數部分繼續乘2,…,直到乘積小數部分為0時停止,這時乘積的整數部分是二進制數最低位系數,每次乘積得到的整數序列就是所求的二進制小數。這種方法每次乘以基數取其整數作系數。所以叫乘基取整法。需要指出的是并不是所有十進制小數都能轉換成有限位的二進制小數并出現乘積的小數部分0的情況,有時整個換算過程無限進行下去。此時可以根據要求并考慮計算機字長,取定長度的位數后四舍五入,這時得到的二進制數是原十進制數的近似值。
另一種約定所有機器數的小數點位置隱含有符號位之后、有效數值部分最高位之前,叫定點純小數機器數,簡稱定點小數。
計算機采用定點數表示時,對于既有整數又有小數的原始數據,需要設定一個比例因子,數據按比例因子縮小成定點小數或擴大成定點整數再參加運算,結果輸出時再按比例折算成實際值。n位原碼定點整數的表示范圍是-(2 n-1 -1)≤X≤2 n-1 -1,n位原碼定點小數的表示范圍是-(1-2 -(n-1) )≤X≤1-2 -(n-1) 。當機器數小于定點數的最小值時,被當作0處理,超出定點數的最大值時,機器無法表達,稱作“溢出”,此時機器將停止運算,屏幕顯示溢出警告。
定點數表示方法簡單直觀,不過定點數表示數的范圍小,不易選擇合適的比例因子,運算過程容易產生溢出。
(2)浮點數(floating-point number)
計算機采用浮點數來表示數值,它與科學計算法相似,把任意一個二進制數通過移動小數點位置表示成階碼和尾數兩部分:N=2 E ×S
其中:E———N的階碼(exponent),是有符號的整數;
S———N的尾數(mantissa),是數值的有效數字部分,一般規定取二進制定點純小數正式。浮點數運算必須化成規格化形式。所謂規格化,對于原碼尾數應使最高數字位S1 =1,如果不是1,且尾數不是全為0時就要移動尾數直到S1 =1,階碼相應變化,保證N值不變。如果尾數是補碼,當N是正數時,S1 必須是1,而N是負數時,S1 必須是0,才稱為規格化的形式。
4.數字編碼
十進制數在機內轉換成二進制數時,有時也以一種中間數字編碼形式存在,它把每一位十進制數用四位二進制編碼表達,每一組只表達0~9的數值運算時,有專門的線路在每四位二進制間按“十”進位處理,故稱為二進制編碼的十進制數———BCD碼(Binary Coded Decimal(或稱二—十進制數。其編碼種類很多,如格雷碼、余3碼等,最常用的叫8421BCD碼,4個二進制位自左向右每位的權分別是8、4、2、1。0~9的8421碼與通常的二進制一樣進位,十分簡單,當計數超過9時,需要采取辦法自動向十進制高位進一,即要進行“十進制調整”才能得到正確結果。
5.校驗碼
由于器件質量不可靠、線路工藝不過關、遠距離傳送帶來的干擾或受來自電源、空間磁場影響等因素,使得信息在存取、傳送和計算過程中難免會發生諸如“1”誤變為“0”的錯誤,計算機一旦出錯,要能及時檢測并糾正錯誤,其中一種方法是對數據信息擴充,加入新的代碼,它與原數據信息一起按某種規律編碼后具有發現錯誤的能力,有的甚至能指出錯誤所在的準確位置使機器自動糾正,能起這種作用的編碼叫“校驗碼”(check code)。
奇偶校驗碼:
將每個數據代碼擴展一個二進位作校驗位(parity bit),這個校驗取0還是取1的原則是:若是奇校驗(odd parity),編碼是含“1”的個數連同校驗位的取值共有奇數個“1”;若是偶校驗(even parity),連同校驗位在內編碼里含“1”的個數是偶數個。
交叉校驗:
計算機進行大量字節傳送時一次傳送幾百甚至更多字節組成的數據塊,如果不僅每一個字節有一個奇偶校驗位———稱橫向校驗,而且全部字節的同一位也設置了一個奇偶校驗位———稱縱向校驗,對數據塊代碼的橫向縱向同時校驗,這種情況叫交叉校驗。
循環冗余校驗碼———CRC碼(Cyclic Redundancy Check):
計算機信息傳向遠方終端或傳到另一個計算中心時,信息沿一條通信線路一位位傳送,這種通信方式叫串行通信。循環冗余碼(簡稱CRC碼)就是一種檢驗能力很強,在串行通信中廣泛采用的校驗編碼。
(1)CRC碼
串行傳送的信息M(X)是一串k位二進制序列,在它被發送的被一個事先選擇的“生成多項式”相除,“生成多項式”長r+1位,相除后得到r位余數就是校驗位,它拼接到原k位有效信息后面即形成CRC碼。CRC碼到達接收方時,接收方的設備一方面接收CRC碼,一方面用同樣的生成多項式相除,如果正好除盡,表示無信息差錯,接收方去掉CRC碼后面r位校驗,收下k位有效信息;當不能除盡時,說明有信息的狀態位發生了轉變,即出錯了。一般要求重新傳送一次或立即。
(2)CRC碼計算
傳送信息時生成CRC碼以及接收時對CRC碼校驗都要與“生成多項式”相除,這里除法是“模2運算”,即二進位運算時不考慮進位和借位。作模2除法時,取商的原則是當部分余數首位為1時商取1,反之商取0,然后按模2減,求部分余數。這個余數不計高位。當被除數逐位除完時,最后余數的位數比除數少一位。該余數就是校驗位。它拼接在有效信息后面組成CRC碼。因為校驗位擴充了傳送部分的代碼,所以這是一種基于“冗余校驗”的思想的校驗辦法。
(3)生成多項式
CRC碼是M(X)除以某一個預先選定的多項式后產生的,所以這個多項式叫生成多項式。并不是任何一個r+1位的編碼都可以作生成多項式用,它應能滿足當任何一位發生傳送錯誤時都能使余數不為0,并且不同位發生錯誤時應當使余數也不同,這樣不但能檢錯而且能推斷是哪一位出錯,從而有利準確的。有兩個生成多項式,其檢錯率很高。
X 16 +X 15 +X 2 +1
X 16 +X 12 +X 6 +1
6.非數值數據的表示方法
計算機中數據的概念是廣義的,機內除有數值數據之外,還有文字、符號、圖象、語言和邏輯信息等等,因為它們也都是0、1形式存在,所以稱為非數值數據。
(1)字符數據
字符數據主要指數字、字母、通用符號、控制符號等,在機內它們都被變換成計算機能夠識別的二進制編碼形式。國際上被普遍采用的一種編碼是美國國家信息交換標準代碼(American Standard Code for Information Interchange),簡稱ASCII碼。ASCII碼選擇了四類共128種常用的字符:①數字0~9。②字母。③通用符號。④動作控制符。
(2)邏輯數據
邏輯數據是指計算機不帶符號位的一位二進制數。
邏輯數據在計算機中雖然也是“0”或“1”的形式,但是與數值有很大區別:
①邏輯數據的取值只有“0”和“1”兩個值,不可能再有其他值,而數值數據與1的不同組合可以反映很多不同數值。
②邏輯數據的“0”和“1”代表兩種成對出現的邏輯概念,與一般數學中代表“0”和“1”的數值概念截然不同。
③邏輯數據和邏輯數據運算可以表達事物內部的邏輯關系,而數值數據表達的是事物的數量關系。漢字:
(1)漢字字音編碼
(2)漢字字形編碼
(3)漢字音形編碼
(4)電報碼
(5)整字編碼為了能在不同的漢字系統之間交換信息、高效率高質量共享漢字信息,近年來國家推出了一系列有關中文信息處理的標準。比如1981年我國制定推行的GB2312-80國家標準信息交換用流字編碼字符集(基本集)———簡稱國標碼,以及若干輔助集。國標碼收集、制定的基本圖形字符有7千余個,其中常用漢字3755個,次常用漢字3008個,共6763個漢字,還有俄文字母、日語假名、拉丁字母、希臘字母、漢語拼音,每字節內占用7bit信息,最高位補0,例如漢字“啊”的國際碼,前一字節是01100000,后一字節是00100001,編碼為3021H。
漢字內部碼是漢字在計算機內部存儲、運算的信息代碼,內部碼的設計要求與西文信息處理有較好的兼容性,當一個漢字以某種漢字輸入方案送入計算機后,管理模塊立刻將它轉換成兩字節長的GB2312-80國標碼,如果給國標碼的每字節最高位加“1”,作為漢字標識符,就成為一種機器內部表示漢字的代碼———漢字內部碼。漢字內部碼的特點十分明顯:
①漢字內部碼結構簡短,一個漢字內部碼只占兩個字節,兩字節足以表達數千個漢字和各種符號圖形,且又節省計算機存儲空間。
②便于和西文字符兼容。西文字符的ASCII碼占一個字節,兩字節的漢字內碼可以看成是它擴展的字符代碼,在同一個計算機系統中,只要從最高位標識符就能區分這兩種代碼。標識符是“0”,即是ASCII碼;標識符是“1”,則是漢字內部碼。
7.語音識別及語言表示原理
語音產生機理的研究表明,每一種語言的語音都有自己特定的音素特征,語音是不同頻率振動的結果。分析語音的音素特點,找出音素的基頻和高次頻率優分,就能在計算機中建立發音系統的模型,在實施中對語音采樣,通過濾波器分解提取頻率信息,由模/數轉換設備轉換成數字輸入計算機,與機內的語言模型比較,由此達到識別語音的目的。與此相反,如果選擇已知音素的參數,應用語音系統模型,就能得到指定的音素,進一步按照一定的規則合成語言。
六、運算器
1.運算器的組成
多功能算術/邏輯運算單元(ALU):
(1)基本思想
(2)邏輯表達式
對一片ALU來說,可有三個進位輸出。其中G稱為進位發生輸出,P稱為進位傳送輸出。在電路中,多加這兩個進位輸出的目的是為了便于實現多片(組)ALU之間的先行進位,為此,還需一個配合電路,它稱為先行進位發生器(CLA)。
內部總線:
根據總線所處位置,總線分為內部總線和外部總線兩類。內部總線是指CPU內各部件的連線,而外部總線是指系統總線,即CPU與存儲器、I/O系統之間的連線。
按總線的邏輯結構來說,總線可分為單向傳送總線和雙向傳送總線。所謂單向總線,就是信息只能向一個方向傳送。所謂雙向總線,就是信息可以向兩個方向傳送。換句話說,總線既可以用來發送數據,也可以用來接收數據。
總線的邏輯電路往往是三態的,即輸出電平有三種狀態:邏輯“1”、邏輯“0”和“浮空”狀態。
2.運算器的基本結構
運算器包括ALU、陣列乘除器件、寄存器、多路開關或三態緩沖器、數據總線等邏輯部件。現代計算機的運算器大體有如下三種結構形式。①單總線結構的運算器②雙總線結構的運算器③三總線結構的運算器
七、控制器
1.控制器在CPU中的位置
中央處理器(CPU)由兩個主要部分———控制器及運算器組成。其中程序計數器、指令寄存器、指令譯碼器、時序產生器和操作控制器等組成了控制器。它是對計算機發布命令的“決策機構”,協調和指揮整個計算機系統的操作,因此,它處于CPU中極其重要的位置。在CPU中,除算術邏輯單元(ALU)及累加器外,尚有下列邏輯部件:
(1)緩沖寄存器(DR)
緩沖寄存器用來暫時存放由內存儲器讀出的一條指令或一個數據字;反之,當向內存存入一條指令或一個數據字時,也暫時將它們存放在這里。緩沖寄存器的作用是:①作為CPU和內存、外部設備之間信息傳送的中轉站;②補償CPU和內存、外部設備之間在操作速度上的差別;
③在單累加器結構的運算器中,緩沖寄存器還可兼作為操作數寄存器。
(2)指令寄存器(IR)指令寄存器用來保存當前正在執行的一條指令。
指令劃分為操作碼和地址碼字段,它們由二進制數字組成。為執行任何給定的指令,必須對操作碼進行譯碼,以便指出所要求的操作。指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。操作碼一經譯碼后,即可向操作控制器發生具體操作的特定信號。(3)程序計數器(PC)
為了保證程序能夠連續地執行下去,CPU必須具有某些手段來確定下一條指令的地址。而程序計數器(PC)正是起到這種作用,所以通常又稱其為指令計數器。
(4)地址寄存器(AR)
地址寄存器用來保存當前CPU所要訪問的內存單元的地址。由于在內存和CPU之間存在著操作速度上的差別,所以必須使用地址寄存器來保持地址信息,直到內存讀/寫操作完成為止。
(5)累加寄存器(AC)
累加寄存器AC通常簡稱為累加器。它的功能是:當運算器的算術/邏輯單元(ALU)執行全部算術和邏輯運算時,為ALU提供一個工作區。例如,在執行一個加法前,先將一個操作數暫時存放在AC中,再從存放中取出另一個操作數,然后同AC的內容相加,所得結果送回AC中,而AC中原有的內容隨即被破壞。顧名思義,累加寄存器用來暫時存放ALU運算的結果信息。顯然,運算器中至少要有一個累加器寄存器。
由于運算器的結構不同,可采用多個累加寄存器。
(6)狀態寄存器(SR)
狀態寄存器保存由算術指令和邏輯指令運行或測試結果建立的各種狀態碼內容。
(7)操作控制器
操作控制器的功能,就是根據指令操作碼和時序信號,產生各種操作控制信號,以便正確地建立數據通路,從而完成取指令和執行指令的控制。