已閱讀5頁,還剩194頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2019/7/19,1,第2章 數(shù)據(jù)的表示和運(yùn)算,2.1 數(shù)制與編碼 2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.3 浮點(diǎn)數(shù)的表示和運(yùn)算 2.4 算術(shù)邏輯單元ALU,2019/7/19,2,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 當(dāng)使用匯編語言或者高級(jí)語言編寫程序時(shí),一般都采用十進(jìn)制形式;有時(shí)出于某種需要也采用十六進(jìn)制形式或者二進(jìn)制形式來表示。但是在計(jì)算機(jī)內(nèi)部,數(shù)據(jù)的表示、存儲(chǔ)和運(yùn)算均采用二進(jìn)制形式。 進(jìn)位計(jì)數(shù)制:又稱為數(shù)制,即按進(jìn)位制的原則進(jìn)行計(jì)數(shù)。數(shù)制由兩大要素組成:基數(shù)R和各數(shù)位的權(quán)W?;鶖?shù)R決定了數(shù)制中各數(shù)位上允許出現(xiàn)的數(shù)碼個(gè)數(shù),基數(shù)為R的數(shù)制稱為R進(jìn)制數(shù)。權(quán)W則表明該數(shù)位上的數(shù)碼所表示的單位數(shù)值的大小,權(quán)W與數(shù)位的位置有關(guān)。 計(jì)算機(jī)中常用的進(jìn)位計(jì)數(shù)制有二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制。,2019/7/19,3,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 假設(shè) 任意數(shù)值N 用 R進(jìn)制數(shù) 來表示,表示形式為n+k個(gè)自左向右排列的符號(hào)來表示: N=(Dn-1Dn-2D0 .D-1D-2D-k)R 式中Di(-kin-1)為該數(shù)制采用的基本符號(hào),可取值0, 1, 2, , R-1,小數(shù)點(diǎn)隱含在D0與D-1之間,整數(shù)部分有n位,小數(shù)部分有k位,數(shù)值N的實(shí)際值為:,2019/7/19,4,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 十進(jìn)制(Decimal) :基數(shù)為10,允許使用的數(shù)字有10個(gè)(0-9)。主要特點(diǎn)是逢十進(jìn)一。任意一個(gè)十進(jìn)制數(shù)可以表示為:,例如十進(jìn)制數(shù)135.26可以表示為:,2019/7/19,5,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 二進(jìn)制(Binary) :基數(shù)為2,可使用的數(shù)字只有0和1,逢二進(jìn)一。任意一個(gè)二進(jìn)制數(shù)可以表示為 :,例如二進(jìn)制數(shù)(1100.1011)2可以表示為:,6,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 計(jì)算機(jī)中數(shù)據(jù)主要以二進(jìn)制數(shù)的形式存儲(chǔ),原因有以下幾點(diǎn) : 二進(jìn)制數(shù)易于表示,比較容易找到具有二值狀態(tài)的物理器件來表示數(shù)據(jù)和實(shí)現(xiàn)存儲(chǔ)。比如脈沖有無、電壓高低等。 二進(jìn)制數(shù)運(yùn)算規(guī)則簡單,運(yùn)算過程中的輸入狀態(tài)和輸出狀態(tài)較少,便于使用電子器件和線路加以實(shí)現(xiàn)。 二進(jìn)制數(shù)的0和1與邏輯推理中的“真”和“假”相對(duì)應(yīng),為實(shí)現(xiàn)邏輯運(yùn)算和邏輯判斷提供了便利。,2019/7/19,7,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 八進(jìn)制(Octal) :基數(shù)為8,可使用的數(shù)字有0-7,逢八進(jìn)一。任意一個(gè)八進(jìn)制數(shù)可以表示為 :,十六進(jìn)制(Hexadecimal) :基數(shù)為16,可使用的數(shù)碼有0-9和A-F(代表10-15),逢十六進(jìn)一。任意一個(gè)十六進(jìn)制數(shù)可表示為 :,2019/7/19,8,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 非十進(jìn)制轉(zhuǎn)化為十進(jìn)制 :非十進(jìn)制數(shù)轉(zhuǎn)為十進(jìn)制數(shù)時(shí)將非十進(jìn)制數(shù)按權(quán)展開,然后求和。 【例2.1】將下列非十進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制。, (1207)8=183282081780=512+128+0+7=(647)10 (A7)16=(10161+7160)10=(160+7)10=(167)10,2019/7/19,9,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 十進(jìn)制轉(zhuǎn)化為非十進(jìn)制 :十進(jìn)制數(shù)轉(zhuǎn)換為非十進(jìn)制數(shù)時(shí)需將十進(jìn)制數(shù)整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換,再將結(jié)果寫到一起。 十進(jìn)制整數(shù)轉(zhuǎn)換為非十進(jìn)制整數(shù):除R取余法。十進(jìn)制整數(shù)不斷除以R,直至商為0。每除一次取一個(gè)余數(shù),從低位排向高位。,例:208轉(zhuǎn)換成十六進(jìn)制數(shù) (208)10 = (D0)16 16 208 余 0 16 13 余 13 = DH 0,2019/7/19,10,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 十進(jìn)小數(shù)轉(zhuǎn)換為非十進(jìn)制小數(shù):乘R取整法。用轉(zhuǎn)換進(jìn)制的基數(shù)乘以小數(shù)部分,直至小數(shù)為0或達(dá)到轉(zhuǎn)換精度要求的位數(shù)。每乘一次取一次整數(shù),從最高位排到最低位。,例:0.625轉(zhuǎn)換成二進(jìn)制數(shù) 0.625 2 1.25 1 (b-1) 0.25 2 0.50 0 (b-2) 0.50 2 1.00 1 (b-3),所以(0.625)10 = (0.101)2,2019/7/19,11,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 【例2.2】將(12.6875)10轉(zhuǎn)化為二進(jìn)制數(shù)。,整數(shù)部分(12)10=(1100)2,2019/7/19,12,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 【例2.2】將(12.6875)10轉(zhuǎn)化為二進(jìn)制數(shù)。,小數(shù)部分(0.6875)10=(0.1011)2. 所以(12.6875)10=(1100.1011)2,2019/7/19,13,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 【課堂練習(xí)】將(105.3125)10轉(zhuǎn)化為二進(jìn)制數(shù)。,(105.3125)10=(1101001.0101)2,2019/7/19,14,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 二進(jìn)制、八進(jìn)制與十六進(jìn)制的轉(zhuǎn)換: 3位二進(jìn)制數(shù)組成1位八進(jìn)制數(shù),4位二進(jìn)制數(shù)組成1位十六進(jìn)制數(shù) 二進(jìn)制轉(zhuǎn)換為八進(jìn)制:從小數(shù)點(diǎn)開始,向兩邊每3位為一組,整數(shù)部分不足3位在前面補(bǔ)“0”,小數(shù)部分不足3位在后面補(bǔ)“0”。 八進(jìn)制轉(zhuǎn)換為二進(jìn)制:過程相反,每一位八進(jìn)制數(shù)轉(zhuǎn)換為3位二進(jìn)制編碼。 二進(jìn)制轉(zhuǎn)換為十六進(jìn)制:從小數(shù)點(diǎn)開始,向兩邊每4位為一組,整數(shù)部分不足4位在前面補(bǔ)“0”,小數(shù)部分不足4位在后面補(bǔ)“0”。 十六進(jìn)制轉(zhuǎn)換為二進(jìn)制:只需將每一位十六進(jìn)制數(shù)寫成它的4位二進(jìn)制編碼即可。 八進(jìn)制與十六進(jìn)制的轉(zhuǎn)換先轉(zhuǎn)換成二進(jìn)制,然后再轉(zhuǎn)換為所求的進(jìn)制數(shù),2019/7/19,15,2.1 數(shù)制與編碼 2.1.1 進(jìn)位計(jì)數(shù)制及其相互轉(zhuǎn)換 【例2.3】將(11011.11001)2轉(zhuǎn)化為八進(jìn)制、十六進(jìn)制,將(751)8轉(zhuǎn)化為十六進(jìn)制。,(11011.11001)2=(011 011.110 010)2=(33.62)8 (11011.11001)2=(0001 1011.1100 1000)2=(1B.C8)16 (751)8=(111 101 001)2=(0001 1110 1001)2=(1 E 9)16,2019/7/19,16,2.1 數(shù)制與編碼 2.1.2 真值和機(jī)器數(shù) 計(jì)算機(jī)中的數(shù)據(jù)可分兩類:無符號(hào)數(shù)和有符號(hào)數(shù)。 無符號(hào)數(shù):即沒有符號(hào)的數(shù),在寄存器中的每一位均可存放數(shù)值。 有符號(hào)數(shù):即帶有符號(hào)的數(shù),存放時(shí)需要留出位置存放符號(hào)。符號(hào)“正”、“負(fù)”需要數(shù)字化,一般用“0”表示正號(hào),用“1”表示負(fù)號(hào),并將它放在有效數(shù)字前面。 機(jī)器數(shù):符號(hào)“數(shù)字化”的數(shù) 真 值:帶“+”或“-”符號(hào)的數(shù) 例如,真值是+0.11001,機(jī)器數(shù)為0.11001;真值為0.11001,機(jī)器數(shù)為1.11001,2019/7/19,17,2.1 數(shù)制與編碼 2.1.3 BCD碼 BCD碼: 使用二進(jìn)制數(shù)編碼來表示十進(jìn)制數(shù)的方法,又叫做二-十進(jìn)制碼。一般用4位二進(jìn)制編碼來表示一個(gè)十進(jìn)制數(shù)。 常用的BCD碼分為有權(quán)碼和無權(quán)碼。 有權(quán)碼: 每一位都有固定的權(quán)值,加權(quán)求和的值即為它所表示的十進(jìn)制數(shù)。常用的有權(quán)碼有8421碼、2421碼、5211碼等,8421碼的4位二進(jìn)制數(shù)的權(quán)從高到低依次是8、4、2、1。一般提到的BCD碼就是指8421碼。這種編碼的優(yōu)點(diǎn)是這4位二進(jìn)制數(shù)之間滿足二進(jìn)制的進(jìn)位規(guī)則。,2019/7/19,18,2.1 數(shù)制與編碼 2.1.3 BCD碼 在計(jì)算機(jī)內(nèi)部實(shí)現(xiàn)BCD碼算術(shù)運(yùn)算,要對(duì)運(yùn)算結(jié)果進(jìn)行修正。 BCD碼加法運(yùn)算修正規(guī)則:如果兩個(gè)一位BCD碼相加之和小于或等于(1001)2,即(9)10,不需修正;如相加之和大于或等于(10)10,要進(jìn)行加6修正,并向高位進(jìn)位,進(jìn)位可在首次相加或修正時(shí)產(chǎn)生。 例如 1+8=9 4+9=13 7+9=16 0 0 0 1 0 1 0 0 0 1 1 1 + 1 0 0 0 + 1 0 0 1 + 1 0 0 1 1 0 0 1 1 1 0 1 1 0 1 1 0 不需修正 加6修正 加6修正,2019/7/19,19,2.1 數(shù)制與編碼 2.1.3 BCD碼 其它幾種有權(quán)碼: 2421、5211、4311碼都采用4位有權(quán)的二進(jìn)制碼表示1個(gè)十進(jìn)制數(shù),但這4位二進(jìn)制之間不符合二進(jìn)制規(guī)則。這幾種有權(quán)碼有一特點(diǎn):任何兩個(gè)相加之和等于(9)10的二進(jìn)制碼互為反碼。 如2421碼中,0(0000)與9(1111)、1(0001)與8(1110),互為反碼。 表 2.1給出了十進(jìn)制數(shù)的幾種常見的4位有權(quán)碼。,2019/7/19,20,2.1 數(shù)制與編碼 2.1.3 BCD碼,表2.1 4位有權(quán)碼,2019/7/19,21,2.1 數(shù)制與編碼 2.1.3 BCD碼 無權(quán)碼: 4位二進(jìn)制編碼的每一位沒有固定的權(quán)。在采用的無權(quán)碼的一些方案中,采用的比較多的是余3碼,格雷碼 余3碼:把原二進(jìn)制的每個(gè)代碼都加0011值得到的。優(yōu)點(diǎn)是執(zhí)行十進(jìn)制數(shù)位相加時(shí),能正確產(chǎn)生進(jìn)位信號(hào),還給減法運(yùn)算帶來了方便。余3碼的執(zhí)行加法運(yùn)算的規(guī)則:當(dāng)兩個(gè)余3碼相加不產(chǎn)生進(jìn)位時(shí),應(yīng)從結(jié)果中減去0011;產(chǎn)生進(jìn)位時(shí),應(yīng)將進(jìn)位信號(hào)送入高位余3碼,同時(shí)本位加0011的修正操作。 格雷碼:它的任何兩個(gè)相鄰的編碼之間只有1個(gè)二進(jìn)制位的狀態(tài)不同,其余3個(gè)二進(jìn)制位必須具有相同狀態(tài)。優(yōu)點(diǎn):從一個(gè)編碼變成下一個(gè)相鄰編碼時(shí),只有1位的狀態(tài)發(fā)生變化,有利于得到更好的譯碼波形,在模擬/數(shù)字轉(zhuǎn)換的電路中得到更好的運(yùn)行結(jié)果。,2019/7/19,22,2.1 數(shù)制與編碼 2.1.3 BCD碼,表2.2 4位無權(quán)碼,2019/7/19,23,2.1 數(shù)制與編碼 2.1.4 字符和字符串 字符:字母、數(shù)碼、運(yùn)算符號(hào)、標(biāo)點(diǎn)符號(hào)等,漢字也屬于字符。使用計(jì)算機(jī)的過程必然要涉及字符。由于計(jì)算機(jī)只能識(shí)別0和1兩種數(shù)碼,所以字符也應(yīng)采用二進(jìn)制編碼。 目前經(jīng)常用的是美國國家信息交換標(biāo)準(zhǔn)字符碼,簡稱ASCII(American Standard Code for Information Interchange)碼。 ASCII碼: 7位二進(jìn)制代碼表示一個(gè)字符,稱為標(biāo)準(zhǔn)或基本ASCII碼,如表 2.3所示。,2019/7/19,24,高位b6b5b4,低位b3b2b1b0,7位ASCII碼編碼表,2019/7/19,25,2.1 數(shù)制與編碼 2.1.4 字符和字符串 標(biāo)準(zhǔn)ASCII碼:有128種的組合,每種組合可代表一個(gè)字符。包括所有大寫和小寫字母,數(shù)字 0 到 9、標(biāo)點(diǎn)符號(hào),及在美式英語中使用的特殊控制字符。 擴(kuò)充ASCII碼: 在標(biāo)準(zhǔn)ASCII碼前面增加一個(gè)二進(jìn)制位,用8位二進(jìn)制數(shù)來給字符編碼。共有256種組合,可給256個(gè)字符編碼。前128個(gè)字符的最高位為0,用于表示標(biāo)準(zhǔn)ASCII碼。后128個(gè)字符的最高位為1,用于表示128種特殊符號(hào),如制表符等。,2019/7/19,26,2.1 數(shù)制與編碼 2.1.4 字符和字符串 漢字編碼:計(jì)算機(jī)的漢字處理技術(shù)必須解決3個(gè)問題:漢字的輸入、存儲(chǔ)與交換和漢字的輸出,它們分別對(duì)應(yīng)于漢字的輸入碼、內(nèi)碼、交換碼和字形碼。 漢字輸入碼: 將漢字輸入到計(jì)算機(jī)中多用的編碼。 數(shù)字輸入法:對(duì)每個(gè)漢字采用一個(gè)數(shù)字串進(jìn)行編碼,例如區(qū)位碼、國標(biāo)碼等。優(yōu)點(diǎn)是無重復(fù)碼,缺點(diǎn)是難以記憶。 字形分解法:將漢字按其規(guī)則和筆畫劃分成若干部件,用字母或者數(shù)字進(jìn)行編碼。如五筆字型輸入法、鄭碼輸入法等。 拼音輸入法:是以漢字拼音為基礎(chǔ)的輸入方法。如全拼輸入法、智能ABC輸入法等。優(yōu)點(diǎn)是無須記憶,缺點(diǎn)是重碼率較高。 音形輸入法:利用拼音輸入法和字形分解法的各自優(yōu)點(diǎn),兼顧漢字的音和形,將兩者混合使用。如自然碼輸入法。,2019/7/19,27,2.1 數(shù)制與編碼 2.1.4 字符和字符串 漢字內(nèi)碼:是計(jì)算機(jī)系統(tǒng)內(nèi)部處理、存儲(chǔ)漢字所使用的統(tǒng)一代碼,一般采用兩個(gè)字節(jié)表示一個(gè)漢字。漢字的輸入碼可以有多種,但內(nèi)碼在計(jì)算機(jī)中是唯一的。 漢字交換碼:不同的具有漢字處理功能的計(jì)算機(jī)系統(tǒng)之間在交換漢字信息時(shí)所用的代碼標(biāo)準(zhǔn)。目前常用的是國標(biāo)碼,即國家標(biāo)準(zhǔn)化信息用漢字編碼。國標(biāo)漢字共有6763個(gè),分兩級(jí),一級(jí)漢字為常用漢字,共3755個(gè);二級(jí)漢字是非常用漢字,共3008個(gè)。每個(gè)漢字對(duì)應(yīng)4位十六進(jìn)制數(shù)(兩個(gè)字節(jié))。,2019/7/19,28,2.1 數(shù)制與編碼 2.1.4 字符和字符串 漢字字形碼:目前的漢字處理系統(tǒng)中,字形信息的表示可以分為兩大類:一類是用活字或文字版的母體字形形式,另一類是用點(diǎn)陣表示法、矢量表示法等形式,其中最基本應(yīng)用最廣泛的是后者。,2019/7/19,29,2.1 數(shù)制與編碼 2.1.4 字符和字符串 字符串:連續(xù)的一串字符, 通常方式下, 它們占用主存中連續(xù)的多個(gè)字節(jié), 每個(gè)字節(jié)存一個(gè)字符。 當(dāng)主存字由2個(gè)或4個(gè)字節(jié)組成時(shí), 在同一個(gè)主存字中, 既可以按從低位字節(jié)向高位字節(jié)的順序存放字符串的內(nèi)容, 也可以按從高位字節(jié)向低位字節(jié)的次序順序存放字符串的內(nèi)容。這兩種存放方式都是常用方式。 如,1F AB THEN READ (C) 就可有兩種不同存放方式。假定每個(gè)主存字由4個(gè)字節(jié)組成, 圖 2.1(a) 是按從高位字節(jié)向低位字符的次序存放, 圖 2.1 (b) 按從低位字節(jié)向高位字節(jié)的次序存放。主存中每個(gè)字節(jié)存放的是相應(yīng)字符的ASCII編碼值。,2019/7/19,30,2.1 數(shù)制與編碼 2.1.4 字符和字符串,(a) (b),2019/7/19,31,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼 計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù),在讀寫、存取和傳送的過程中可能產(chǎn)生錯(cuò)誤(隨機(jī)錯(cuò)誤或突發(fā)錯(cuò)誤)。 為減少和避免這類錯(cuò)誤,一方面精心設(shè)計(jì)各種電路,提高計(jì)算機(jī)硬件的可靠性;另一方面是在數(shù)據(jù)編碼上找出路,即采用某種編碼法,通過少量附加電路,使之能發(fā)現(xiàn)某些錯(cuò)誤,甚至能確定出錯(cuò)位置,進(jìn)而實(shí)現(xiàn)自動(dòng)改錯(cuò)的能力。,2019/7/19,32,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼 數(shù)據(jù)校驗(yàn)碼是一種常用的帶有發(fā)現(xiàn)某些錯(cuò)誤或自動(dòng)改錯(cuò)能力的數(shù)據(jù)編碼方法。 實(shí)現(xiàn)原理:加進(jìn)一些冗余碼,使合法數(shù)據(jù)編碼出現(xiàn)某些錯(cuò)誤時(shí),就成為非法編碼。這樣就可以通過檢測編碼的合法性來達(dá)到發(fā)現(xiàn)錯(cuò)誤的目的。 碼距:一個(gè)編碼系統(tǒng)中任意兩個(gè)合法編碼(碼字)之間不同的二進(jìn)數(shù)位(bit)數(shù)叫這兩個(gè)碼字的碼距,而整個(gè)編碼系統(tǒng)中任意兩個(gè)碼字的最小距離就是該編碼系統(tǒng)的碼距。,2019/7/19,33,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼 圖2.4所示編碼系統(tǒng),用三個(gè)bit表示8個(gè)碼字。兩個(gè)碼字之間不同的bit數(shù)最少為1,故該系統(tǒng)碼距為1。如任何碼字中一位或多位被顛倒,這個(gè)碼字不能與其它有效信息區(qū)分開。如傳送信息001,而被誤收為011,因011仍是合法碼字,接收機(jī)將認(rèn)為011是正確信息。,圖 2.4 用三個(gè)bit來表示8個(gè)碼字,2019/7/19,34,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼 圖2.5所示編碼系統(tǒng),用4個(gè)bit表示8個(gè)碼字,碼字間的最小距離增加到2,碼距為2。8個(gè)碼字相互間最少有兩bit的差異。如果任何信息的一個(gè)數(shù)位被顛倒,就成為一個(gè)非法碼字。如信息是1001,誤收為1011,接收機(jī)知道發(fā)生了一個(gè)差錯(cuò),因?yàn)?011不是一個(gè)合法碼字。但差錯(cuò)不能被糾正,偶數(shù)個(gè)差錯(cuò)也無法發(fā)現(xiàn)。,圖 2.5 用4個(gè)bit來表示8個(gè)碼字,2019/7/19,35,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼 為使一個(gè)系統(tǒng)能檢查和糾正一個(gè)差錯(cuò),碼間最小距離必須至少是“3”。最小距離為3時(shí),或能糾正一個(gè)錯(cuò),或能檢二個(gè)錯(cuò),但不能同時(shí)糾一個(gè)錯(cuò)和檢二個(gè)錯(cuò)。編碼信息糾錯(cuò)和檢錯(cuò)能力的進(jìn)一步提高需要進(jìn)一步增加碼字間的最小距離。表2.6概括了最小距離為1至7的碼的糾錯(cuò)和檢錯(cuò)能力。 常用的數(shù)據(jù)校驗(yàn)碼:奇偶校驗(yàn)碼、 海明校驗(yàn)碼、循環(huán)冗余校驗(yàn)碼,2019/7/19,36,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-奇偶校驗(yàn)碼 奇偶校驗(yàn)碼:奇偶檢驗(yàn)碼是一種最簡單、最直觀、應(yīng)用最廣泛的檢錯(cuò)碼,它的碼距為2,因此它只能檢出一位錯(cuò)。 實(shí)現(xiàn)方法:由若干位有效信息(如1個(gè)字節(jié)),再加上1個(gè)二進(jìn)制位(校驗(yàn)位)組成校驗(yàn)碼。檢驗(yàn)位的取值(0或1)將使整個(gè)校驗(yàn)碼中“1”的個(gè)數(shù)為奇數(shù)或偶數(shù)。當(dāng)校驗(yàn)位的取值使整個(gè)校驗(yàn)碼中“1”的個(gè)數(shù)為奇數(shù)時(shí),稱為奇校驗(yàn);當(dāng)“1”的個(gè)數(shù)為偶數(shù)時(shí)為偶校驗(yàn)。 奇偶校驗(yàn)的編碼和檢驗(yàn)的電路:常見的有并行奇偶統(tǒng)計(jì)電路,如圖2.2所示。,2019/7/19,37,PO = D1 D2 D3 D4 D5 D6 D7 D8,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-奇偶校驗(yàn)碼,圖 2.2 奇偶校驗(yàn)位的形成及檢驗(yàn)電路,=,2019/7/19,38,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-奇偶校驗(yàn)碼 下面以奇校驗(yàn)為例說明對(duì)主存信息進(jìn)行奇偶校驗(yàn)的全過程: 校驗(yàn)位形成: 當(dāng)要把一個(gè)字節(jié)的代碼D7D0寫入主存時(shí),就將它們送往奇偶校驗(yàn)邏輯電路,該電路產(chǎn)生的“奇形成”信號(hào)就是校驗(yàn)位。它將與8位代碼一起作為奇校驗(yàn)碼寫入主存。若D7D0中有偶數(shù)個(gè)“1”,則“奇形成”=1,若D7D0中有奇數(shù)個(gè)“1”,則“奇形成”=0。 校驗(yàn)檢測: 校驗(yàn)檢測是將讀出的9位代碼(8位信息位和1位校驗(yàn)位)同時(shí)送入奇偶校驗(yàn)電路檢測。若讀出代碼沒有錯(cuò)誤,則“奇校驗(yàn)出錯(cuò)”=0;若讀出代碼中的某一位上出現(xiàn)錯(cuò)誤,則“奇校驗(yàn)出錯(cuò)”=1,表示這個(gè)9位代碼中一定有某一位出現(xiàn)了錯(cuò)誤,但是具體的錯(cuò)誤位置是不能確定的。,2019/7/19,39,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-奇偶校驗(yàn)碼 水平垂直奇偶校驗(yàn)碼:實(shí)際工作中還經(jīng)常采用縱橫都加校驗(yàn)奇偶校驗(yàn)位的編碼系統(tǒng)水平垂直奇偶校驗(yàn)碼。 考慮傳輸若干個(gè)長度為m位的信息。如果把這些信息編成每組n個(gè)信息的分組,則在這些不同的信息間,也能夠作奇偶校驗(yàn)。下圖中n個(gè)信息的一個(gè)分組排列成矩陣式樣,并以水平奇偶(HP)及垂直奇偶(VP)的形式編出奇偶校驗(yàn)位。,2019/7/19,40,2.1 數(shù)制與編碼 【例】(2001年程序員試題) :由 6 個(gè)字符的 7 位 ASCII 編碼排列,加上水平垂直奇偶校驗(yàn)位構(gòu)成下列矩陣(最后一列為水平奇偶校驗(yàn)位,最后一行為垂直奇偶校驗(yàn)位),則:,X1 X2 X3 X4 處比特分別為? X5 X6 X7 X8 處比特分別為? X9 X10 XI1 X12 處比特分別為? Y1 和 Y2 處的字符分別為?,0,1,1,1,0,0,0,1,1,1,1,0,2019/7/19,41,2.1 數(shù)制與編碼 【解】從ASCII碼左起第5列可知垂直為偶校驗(yàn)。則: 從第1列可知X4=0;從第3行可知水平也是偶校驗(yàn)。 從第2行可知X3=1;從第7列可知X8=0;從第8列可知X12=1; 從第6列可知X10=0;從第6行可知X9=1;從第2列可知X1=1; 從第1行可知X2=1;從第3列可知X5=1;從第4行可知X6=0; 從第4列(或第5行)可知X7=0;從第7行可知X11=1; 整理一下: X1X2X3X4 = 1110 , X5X6X7X8 = 1000 X9X10X11X12 = 1011 由字符Y1的ASCII碼1001001=49H知道,Y1即是“I”(由“D”的ASCII碼是1000100=44H推得) 由字符Y2的ASCII碼0110111=37H知道,Y2即是“7”(由“3”的ASCII碼是0110011=33H推得) 假如你能記住“0”的ASCII碼是0110000=30H;“A”的ASCII碼是1000001=41H,則解起來就更方便了,2019/7/19,42,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-海明校驗(yàn)碼 這是由Richard Hamming于1950年提出的、目前還被廣泛采用在網(wǎng)絡(luò)傳輸?shù)阮I(lǐng)域。 實(shí)現(xiàn)原理:在有效信息位中加入幾個(gè)校驗(yàn)位形成海明碼,使碼距比較均勻的拉大,并把數(shù)據(jù)的每一個(gè)二進(jìn)制位分配在幾個(gè)奇偶校驗(yàn)組中。當(dāng)某一位出錯(cuò)后,就會(huì)引起有關(guān)的幾個(gè)校驗(yàn)組的值發(fā)生變化,這不但可以發(fā)現(xiàn)出錯(cuò),還能指出是哪一位出錯(cuò),為自動(dòng)糾錯(cuò)提供了依據(jù)。,2019/7/19,43,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-海明校驗(yàn)碼 假設(shè)校驗(yàn)位的個(gè)數(shù)為r,則它能表示2r個(gè)信息,用其中的一個(gè)信息指出“沒有錯(cuò)誤”,其余的2r-1個(gè)信息指出錯(cuò)誤發(fā)生在哪一位。然而錯(cuò)誤也可能發(fā)生在校驗(yàn)位,因此只有k=2r-1-r個(gè)信息能用于糾正被傳送數(shù)據(jù)的位數(shù),也就是說要滿足關(guān)系。 2rk+r+1 (2.10) 如要能檢測與自動(dòng)校正一位錯(cuò),并發(fā)現(xiàn)兩位錯(cuò),則應(yīng)在前一條件下再增加1位總校驗(yàn)位,此時(shí)校驗(yàn)位的位數(shù)r和數(shù)據(jù)位的位數(shù)k應(yīng)滿足下述關(guān)系: 2r-1k+r (2.11) 。,2019/7/19,44,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-海明校驗(yàn)碼 可計(jì)算出數(shù)據(jù)位k與校驗(yàn)位r的對(duì)應(yīng)關(guān)系,如表2.7所示。,2019/7/19,45,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-海明校驗(yàn)碼 海明碼的編碼規(guī)律:數(shù)據(jù)位k位,校驗(yàn)位r位,假設(shè)海明碼的最高位號(hào)為m,最低位號(hào)為1,即HmHm-1H2H1 (1) 校驗(yàn)位與數(shù)據(jù)位之和為m,每個(gè)校驗(yàn)位Pi在海明碼中被分在位號(hào)2i-1的位置,其余各位為數(shù)據(jù)位,并按從低向高逐位依次排列的關(guān)系分配各數(shù)據(jù)位。 (2) 海明碼的每一位碼Hi(包括數(shù)據(jù)位和校驗(yàn)位本身)由多個(gè)校驗(yàn)位校驗(yàn),其關(guān)系是被校驗(yàn)的每一位位號(hào)要等于校驗(yàn)它的各校驗(yàn)位的位號(hào)之和。以便校驗(yàn)的結(jié)果能正確反映出出錯(cuò)位的位號(hào)。,2019/7/19,46,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-海明校驗(yàn)碼 例如: 校驗(yàn)位r=5,用P1-P5表示,數(shù)據(jù)位k=8,用D1-D8表示,5個(gè)校驗(yàn)位P5P1對(duì)應(yīng)的海明碼位號(hào)應(yīng)分別為H13,H8,H4,H2和H1。P5只能放在H13一位上,它已經(jīng)是海明碼的最高位了,其他4位滿足Pi的位號(hào)等于2i-1的關(guān)系。其余為數(shù)據(jù)位Di,則有如下排列關(guān)系:P5D8D7D6D5P4D4D3D2P3D1P2P1 按照海明碼的編碼規(guī)律,每個(gè)海明碼的位號(hào)要等于參與檢驗(yàn)它的幾個(gè)檢驗(yàn)位的位號(hào)之和的關(guān)系,可以給出如表2.8所示的結(jié)果,2019/7/19,47,表2.8 出錯(cuò)的海明碼位號(hào)和校驗(yàn)位位號(hào)的關(guān)系,2019/7/19,48,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-海明校驗(yàn)碼 由有關(guān)數(shù)據(jù)位形成Pi值的偶校驗(yàn)的結(jié)果: P1 =D1 D2 D4 D5 D7 P2 =D1 D3 D4 D6 D7 P3 =D2 D3 D4 D8 P4 =D5 D6 D7 D8 若要分清是兩位出錯(cuò)還是一位出錯(cuò),還要補(bǔ)充一位P5總校驗(yàn)位 P5 =D1 D2 D3 D4 D5 D6 D7 D8 P4 P3 P2 P1 每一位數(shù)據(jù)位,都至少出現(xiàn)在3個(gè)Pi值的形成關(guān)系中。當(dāng)任一位數(shù)據(jù)碼發(fā)生變化時(shí),必將引起3個(gè)或4個(gè)Pi值跟著變化,該海明碼的碼距為4。,2019/7/19,49,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-海明校驗(yàn)碼 按如下關(guān)系對(duì)所得到的海明碼實(shí)現(xiàn)偶校驗(yàn): S1 = P1 D1 D2 D4 D5 D7 S2 = P2 D1 D3 D4 D6 D7 S3 = P3 D2 D3 D4 D8 S4 = P4 D5 D6 D7 D8 S5 = P5 P4 P3 P2 P1 D1 D2 D3 D4 D5 D6 D7 D8 校驗(yàn)得到的結(jié)果值S5 S1能反應(yīng)13位海明碼的出錯(cuò)情況 任何奇數(shù)個(gè)數(shù)出錯(cuò), S5一定為1 任何偶數(shù)個(gè)數(shù)出錯(cuò), S5一定為0 圖3.11是H=12,數(shù)據(jù)位k=8,校驗(yàn)位r=4的海明校驗(yàn)線路,記作(12,8)分組碼。,2019/7/19,50,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-海明校驗(yàn)碼 圖2.3是H=12,數(shù)據(jù)位k=8,校驗(yàn)位r=4的海明校驗(yàn)線路,記作(12,8)分組碼。 圖中,H12 , H11, , H1是被校驗(yàn)碼, D8 , D7, , D1是糾正后的數(shù)據(jù), S4 , S3, S2, S1是用奇偶形成線路得到的。 若S4 S1全0,說明代碼無錯(cuò);若為1100或1011,則分別表示H12 或 H11有錯(cuò),通過相關(guān)譯碼線經(jīng)異或電路糾正該位。,2019/7/19,51,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-海明校驗(yàn)碼,圖2.3 (12,8)分組碼海明校驗(yàn)線路,2019/7/19,52,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-海明校驗(yàn)碼 假如要進(jìn)一步判別是1位錯(cuò)還是2位錯(cuò),則再增加一個(gè)校驗(yàn)位。并用圖2.4來取代圖2.3虛框中的內(nèi)容,此時(shí)增加了一個(gè)奇偶形成線路S5。 如為一位錯(cuò),仍按圖2.3來糾正數(shù)據(jù)位;如為兩位錯(cuò),則無法糾正錯(cuò)誤。,圖2.4 判1位/2位錯(cuò)的附加線路,2019/7/19,53,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 CRC(cyclic redundancy check)碼可以發(fā)現(xiàn)并糾正信息存儲(chǔ)或傳送過程中連續(xù)出現(xiàn)的多位錯(cuò)誤,在磁介質(zhì)存儲(chǔ)和計(jì)算機(jī)之間通信方面得到廣泛應(yīng)用; 在數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)通訊領(lǐng)域,CRC應(yīng)用廣泛: 著名通訊協(xié)議X.25的FCS(幀檢錯(cuò)序列)采用CRC. CCITT,ARJ、LHA等壓縮工具軟件采用的是CRC32,磁盤驅(qū)動(dòng)器的讀寫采用了CRC16,通用的圖像存儲(chǔ)格式GIF、TIFF等也都用CRC作為檢錯(cuò)手段。歐洲交換機(jī)都使用CRC4。,2019/7/19,54,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 CRC碼是基于模2運(yùn)算而建立編碼規(guī)律的校驗(yàn)碼; 模2運(yùn)算特點(diǎn):運(yùn)算不考慮進(jìn)位和借位,規(guī)則如下: 模2加和模2減規(guī)則相同,按位異或,相同得0,不同得1。即:00=0,01=1,10=1,11=0。 模2乘時(shí)按模2加求部分積之和。 模2除是按模2減求部分余數(shù)。每求一位商應(yīng)使部分余數(shù)減少一位。上商規(guī)則是:當(dāng)部分余數(shù)的首位為1時(shí),商取1,當(dāng)部分余數(shù)的首位為0時(shí),商取0;當(dāng)部分余數(shù)的位數(shù)小于除數(shù)位數(shù)時(shí),該余數(shù)即為最后余數(shù)。,2019/7/19,55,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 模2乘例子: 模2除例子:,2019/7/19,56,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 CRC碼基本原理是:在K位信息碼后再拼接R位的校驗(yàn)碼,整個(gè)編碼長度為N位,因此,這種編碼又叫(N,K)碼。對(duì)于一個(gè)給定的(N,K)碼,可以證明存在一個(gè)最高次冪為N-K=R的多項(xiàng)式G(x)。根據(jù)G(x)可以生成K位信息的校驗(yàn)碼,而G(x)叫做這個(gè)CRC碼的生成多項(xiàng)式; CRC碼的關(guān)鍵是如何從K位信息位簡便地得到r位校驗(yàn)位(編碼),及如何從K+R位信息碼判斷是否出錯(cuò)。,2019/7/19,57,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 CRC碼的編碼方法: 將待編碼的k位有效信息位組表達(dá)為多項(xiàng)式M(x): M(x)=Ck-1xk-1+Ck-2xk-2+Cixi+C1x+C0 將信息位組左移r位,則可表示為多項(xiàng)式M(x)xr。可空出r位,以便拼接r位校驗(yàn)位 。 CRC碼用多項(xiàng)式M(x)xr除以G(x)(生成多項(xiàng)式)所得余數(shù)作為校驗(yàn)位。為了得到r位余數(shù)(校驗(yàn)位),G(x)必須是r+1位。 設(shè)所得余數(shù)表達(dá)為R(x),商為Q(x)。將余數(shù)拼接在信息位組左移空出的r位上,構(gòu)成有效信息的CRC碼。多項(xiàng)式表達(dá)為: M(x) xr +R(x)=Q(x)G(x)+R(x)+R(x) =Q(x)G(x)+R(x)+R(x)=Q(x)G(x),2019/7/19,58,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 CRC碼的編碼方法: 因此所得CRC碼可被G(x)表示的數(shù)碼除盡。 如果CRC碼在傳輸過程中不出錯(cuò),其余數(shù)必為0; 如果傳輸過程中出錯(cuò),則余數(shù)不為0,由余數(shù)指出哪一位出錯(cuò),即可糾正。,2019/7/19,59,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 【例2.4】已知有效信息為011,試用生成多項(xiàng)式為G(x)=10111將其編碼。 解:有效信息M(x)=011=x+1,n=3 由G(x)=10111=x4+x2+x+1 得k+1=5,k=4 將有效信息左移4位后再被G(x)模2除,即M(x)x4=x5+x4 對(duì)應(yīng)的代碼為0110000,用G(x)的二進(jìn)制編碼10111來除,如下: 所以,M(x)x4+R(x)=0110000+1001=0111001為CRC碼。 總信息位為7位,有效信息位為3位,上述0111001碼稱(7,3)碼,2019/7/19,60,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 【課堂練習(xí)】對(duì)4位有效信息(1100)求循環(huán)校驗(yàn)編碼,選擇生成多項(xiàng)式(1011) 。 解: M(x)=x3+x2=1100 (k=4) M(x)x3=x6+x5=1100000 (左移r=3位) G(x)=x3+x+1=1011 (r+1=4位) M(x)x3/G(x)=1100000/1011=1110+010/1011 (模2除) M(x)x3+R(x)=1100000+010=1100010 (模2加) 將編好的循環(huán)校驗(yàn)碼稱為(7,4)碼,即n=7,k=4。,練習(xí):假設(shè)使用的生成多項(xiàng)式是G(x)=x3+x+1。4位的原始報(bào)文為1010,求編碼后的報(bào)文。(答案 A: 1010011 ),2019/7/19,61,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 CRC碼的譯碼與糾錯(cuò):將收到的循環(huán)冗余碼用生成多項(xiàng)式G(X)去除。若無錯(cuò),則余數(shù)為0; 若某位出錯(cuò),余數(shù)不為0。不同出錯(cuò)位余數(shù)不同。表 2.9為(7,3)碼對(duì)應(yīng)G(X)=10111的出錯(cuò)模式。,2019/7/19,62,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 從表 2.9可以看出,更換不同的待測碼字,余數(shù)和出錯(cuò)位的對(duì)應(yīng)關(guān)系不變,只與碼制和生成多項(xiàng)式有關(guān)。余數(shù)的不同,可以確定出錯(cuò)位數(shù)。 例如,CRC碼字0111001在傳輸過程中若無差錯(cuò),接收端用G(X)=10111去除,余數(shù)為0;如果在傳輸過程中有差錯(cuò),在接收端變成了0111000,用G(X)=10111去除,余數(shù)不為0,等于0001,查表 2.9就可找出出錯(cuò)位為A7 。,2019/7/19,63,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 如果循環(huán)碼有一位出錯(cuò),被G(x)模2除將得到一個(gè)不為0的余數(shù)。如果余數(shù)補(bǔ)0繼續(xù)除下去,將發(fā)現(xiàn)各次所得余數(shù)將按表 2.9順序循環(huán)。 例如,第7位出錯(cuò),余數(shù)為0001,補(bǔ)0后繼續(xù)模2除,第二次余數(shù)為0010,以后依次為0100,1000.反復(fù)循環(huán),這就是“循環(huán)碼”名稱的由來。 該特點(diǎn)便于對(duì)糾錯(cuò)電路的設(shè)計(jì)。即當(dāng)出現(xiàn)不為零的余數(shù)后,一方面余數(shù)補(bǔ)0繼續(xù)操作,另一方面將被檢測的校驗(yàn)碼字循環(huán)左移。,2019/7/19,64,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 由表2.9可知,當(dāng)出現(xiàn)余數(shù)為1011時(shí),出錯(cuò)位為A1,取反糾正A1,然后繼續(xù)循環(huán)左移7次,即得到一個(gè)經(jīng)過糾正的CRC碼。 需要指出的是,并不是任何一個(gè)(k+1)位多項(xiàng)式都可以作為生成多項(xiàng)式。從檢錯(cuò)和糾錯(cuò)的要求出發(fā),生成多項(xiàng)式應(yīng)滿足以下要求: 任何一位發(fā)生錯(cuò)誤,都應(yīng)該使余數(shù)不為零。 不同位發(fā)生錯(cuò)誤應(yīng)使余數(shù)不同。 對(duì)余數(shù)繼續(xù)做模2除,應(yīng)使余數(shù)循環(huán),2019/7/19,65,2.1 數(shù)制與編碼 2.1.5 數(shù)據(jù)校驗(yàn)碼-循環(huán)冗余校驗(yàn)碼 常用生成多項(xiàng)式: 名稱 生成多項(xiàng)式 標(biāo)準(zhǔn)引用 CRC-4 x4+x+1 ITU G.704 (國際電信聯(lián)盟 ) CRC-4 x4+x2+x+1 CRC-8 x8+x5+x4+1 CRC-8 x8+x2+x1+1 CRC-8 x8+x6+x4+x3+x2+x1 CRC-12 x12+x11+x3+x+1 CRC-16 x16+x15+x2+1 IBM SDLC CRC16-CCITT x16+x12+x5+1 ISO HDLC, ITU X.25, V.34/V.41/V.42, PPP-FCS CRC-32 x32+x26+x23+.+x2+x+1 DB7 ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCS,2019/7/19,66,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 計(jì)算機(jī)進(jìn)行算術(shù)運(yùn)算時(shí),需要指出小數(shù)點(diǎn)的位置。在計(jì)算機(jī)中根據(jù)小數(shù)點(diǎn)的位置是否固定可以分為定點(diǎn)數(shù)和浮點(diǎn)數(shù)兩種數(shù)據(jù)格式。 在定點(diǎn)數(shù)中小數(shù)點(diǎn)的位置固定不變。通常,把小數(shù)點(diǎn)固定在數(shù)位的最前面或末尾,所以定點(diǎn)數(shù)可以分為定點(diǎn)小數(shù)和定點(diǎn)整數(shù)兩類。 根據(jù)符號(hào)的有無,定點(diǎn)數(shù)又分為無符號(hào)數(shù)和有符號(hào)數(shù)兩類。,2019/7/19,67,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 無符號(hào)數(shù):沒有符號(hào)的數(shù),數(shù)值的每一位均用來存放數(shù)值。 有符號(hào)數(shù):帶有符號(hào)的數(shù),存儲(chǔ)時(shí)需留出位置存放符號(hào)。 在機(jī)器字長相同時(shí),無符號(hào)數(shù)與有符號(hào)數(shù)所對(duì)應(yīng)的數(shù)值范圍是不同。以機(jī)器字長為16位為例,無符號(hào)數(shù)的表示范圍為065535,而有符號(hào)數(shù)的表示范圍為-32768+32767(用補(bǔ)碼表示)。,2019/7/19,68,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 有符號(hào)數(shù)的表示:在計(jì)算機(jī)中,常采用機(jī)器數(shù)來表示數(shù)據(jù)。常用的有原碼、反碼、補(bǔ)碼、移碼等。 (1)原碼表示法:是一種比較直觀的表示方法,其符號(hào)位表示該數(shù)的符號(hào),“+”用“0”表示,“-”用“1”表示,而數(shù)值部分仍保留著其真值的特征。,2019/7/19,69,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (1)原碼表示法: 定點(diǎn)小數(shù)的原碼形式為x0.x1x2xn,原碼定義是:,式中x是真值 【例2.5】 x=+0.1001,則x原=0.1001 x =-0.1001,則x原=1-(-0.1001)=1+0.1001=1.1001,2019/7/19,70,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (1)原碼表示法: 定點(diǎn)整數(shù)的原碼形式為x0x1x2xn ,原碼定義是:,式中x是真值, n是整數(shù)位數(shù) 【例2.6】 x=+1001, 則x原=01001 x=-1001, 則x原=24-(-1001)=24+1001=11001,2019/7/19,71,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (1)原碼表示法: 原碼表示法有兩個(gè)特點(diǎn): (1)零的表示有“+ 0”和“- 0”之分,故有兩種形式: +0原=0.000;-0原=1.000 (2)符號(hào)位 x0的取值由下式?jīng)Q定: 其中x是真值。,2019/7/19,72,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (1)原碼表示法: 原碼表示法的優(yōu)點(diǎn): 比較直觀、簡單易懂; 最大缺點(diǎn): 加減法運(yùn)算復(fù)雜。例如,當(dāng)兩數(shù)相加時(shí),先要判別兩數(shù)的符號(hào),如果兩數(shù)是同號(hào),則相加;兩數(shù)是異號(hào),則相減。而進(jìn)行減法運(yùn)算又要先比較兩數(shù)絕對(duì)值的大小,再用大絕對(duì)值減去小絕對(duì)值,最后還要確定運(yùn)算結(jié)果的正負(fù)號(hào)。符號(hào)位不能直接參與運(yùn)算! 后面介紹的補(bǔ)碼可解決原碼的缺點(diǎn)。,2019/7/19,73,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (2)補(bǔ)碼表示法: 定點(diǎn)小數(shù)的補(bǔ)碼形式為x0.x1x2xn ,則補(bǔ)碼定義:,【例2.7】 x=+0.1001,則x補(bǔ)=0.1001 x =-0.1001,則x補(bǔ)= 10.0000+(-0.1001)=1.0111 x=0,則+0.0000補(bǔ)=0.0000 -0.0000補(bǔ)=2+(-0.0000)=10.00000-0.0000=0.0000,式中x是真值,補(bǔ)碼中的“零”只有一種表示形式,2019/7/19,74,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (2)補(bǔ)碼表示法: 對(duì)于小數(shù),若x=-1,則根據(jù)小數(shù)補(bǔ)碼定義, 有 x補(bǔ)=2+X=10.0000-1.0000=1.0000。 可見,-1本不屬于小數(shù)范圍,但卻有-1補(bǔ)存在. 這是由于補(bǔ)碼中的零只有一種表示形式,故它比 原碼能多表示一個(gè)“-1”,2019/7/19,75,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (2)補(bǔ)碼表示法: 定點(diǎn)整數(shù)x0x1x2xn ,則補(bǔ)碼定義:,【例2.8】 x= +1001,則x補(bǔ)01001 x= -1001,則 x補(bǔ)25+(-1001) 100000-1001=10111,式中x是真值,n是整數(shù)位數(shù),2019/7/19,76,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (2)補(bǔ)碼表示法: 補(bǔ)碼表示法進(jìn)行減法運(yùn)算要比采用原碼形式簡單。 對(duì)于補(bǔ)碼來說,無論是正數(shù)還是負(fù)數(shù),機(jī)器總是做加法運(yùn)算。 根據(jù)補(bǔ)碼定義,求負(fù)數(shù)的補(bǔ)碼時(shí)要做一次減法運(yùn)算。 從下面介紹的反碼表示法中可以獲得求負(fù)數(shù)補(bǔ)碼的簡便方法,解決負(fù)數(shù)的求補(bǔ)問題。,2019/7/19,77,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (3)反碼表示法: 反碼表示法中,符號(hào)的表示法與原碼相同。 正數(shù)的反碼與正數(shù)的原碼形式相同;負(fù)數(shù)的反碼符號(hào)位為1,數(shù)值部分通過將負(fù)數(shù)原碼的數(shù)值部分各位取反(0變1,1變0)得到。,2019/7/19,78,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (3)反碼表示法: 定點(diǎn)小數(shù)的反碼形式為x0.x1x2xn,反碼定義是:,式中x是真值,n是小數(shù)位數(shù),【例2.9】 x=+0.0110,x反=0.0110 x =-0. 0110,x反=(2-2-4)+x=1.1111-0. 0110=1.1001,2019/7/19,79,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (3)反碼表示法: 對(duì)于0,反碼有兩種表示形式,即 + 0反 = 0.0000 - 0反 = 1.1111,2019/7/19,80,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (3)反碼表示法: 定點(diǎn)整數(shù) x0x1xn, 反碼定義是:,式中x是真值,n是整數(shù)位數(shù),【例2.10】 x=+1101,x反=01101 x =-1101,x反=(24+1-1)+x=11111-1101=10010,2019/7/19,81,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (3)反碼表示法: 比較小數(shù)與整數(shù)的反碼與補(bǔ)碼的公式可得到: x補(bǔ)=x反+ 2-n (0x-1) x補(bǔ)=x反+ 1 (0x -2 -n) 若要求一個(gè)負(fù)數(shù)的補(bǔ)碼,其方法是符號(hào)位置 1,其余各位取反,然后在最末位上加 1。 在計(jì)算機(jī)中,當(dāng)用串行電路按位將原碼轉(zhuǎn)換成補(bǔ)碼形式時(shí)(或反之),經(jīng)常采取以下方法:自低位開始轉(zhuǎn)換,從低位向高位,在遇到第1個(gè)“1”之前,保持各位的“0”不變,第1個(gè)“1”也不變,以后的各位按位取反,最后保持符號(hào)位不變,經(jīng)歷一遍后,即可得到補(bǔ)碼。,2019/7/19,82,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 (4)移碼表示法: 移碼通常用于表示浮點(diǎn)數(shù)的階碼。階碼是n位的整數(shù),假設(shè)定點(diǎn)整數(shù)移碼形式為x0x1x2 xn 時(shí),移碼的定義是:,式中x是真值,n是整數(shù)位數(shù) 由移碼的定義式可知,對(duì)于同一個(gè)整數(shù),其移碼與其補(bǔ)碼數(shù)值位完全相同,而符號(hào)位相反。,2019/7/19,83,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.1定點(diǎn)數(shù)的表示 【例2.11】 將十進(jìn)制真值 x = -127 ,1,0,1,127分別表示為8位原碼、反碼、補(bǔ)碼、移碼值。,2019/7/19,84,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.2 定點(diǎn)數(shù)的運(yùn)算 定點(diǎn)數(shù)的運(yùn)算包括移位、加、減、乘、除幾種。 1移位運(yùn)算 對(duì)十進(jìn)制數(shù)據(jù),小數(shù)點(diǎn)左移一位相當(dāng)于數(shù)據(jù)縮小10倍,右移一位相當(dāng)于數(shù)據(jù)放大10倍。 計(jì)算機(jī)中數(shù)據(jù)以二進(jìn)制形式存儲(chǔ),且小數(shù)點(diǎn)的位置是固定的,二進(jìn)制表示的機(jī)器數(shù)在相對(duì)于小數(shù)點(diǎn)做n位左移或右移時(shí),其實(shí)質(zhì)是該數(shù)乘以或除以2n。 移位運(yùn)算對(duì)計(jì)算機(jī)有很高的實(shí)用價(jià)值,用移位指令對(duì)數(shù)據(jù)進(jìn)行放大或縮小,比乘除運(yùn)算要快得多。,2019/7/19,85,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.2 定點(diǎn)數(shù)的運(yùn)算 定點(diǎn)數(shù)的運(yùn)算包括移位、加、減、乘、除幾種。 1移位運(yùn)算 移位運(yùn)算分為邏輯移位、算術(shù)移位和循環(huán)移位三種。 主要區(qū)別:符號(hào)位和移出的數(shù)據(jù)位的處理方法不同。與手工移位運(yùn)算不同,計(jì)算機(jī)移位寄存器字長固定,當(dāng)進(jìn)行左移和右移時(shí),寄存器最低位和最高位會(huì)出現(xiàn)空余位,最高位和最低位相應(yīng)地也會(huì)被移出,對(duì)空出的空位應(yīng)該填補(bǔ)0還是1,這與移位種類和機(jī)器數(shù)編碼方法有關(guān)。,2019/7/19,86,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.2 定點(diǎn)數(shù)的運(yùn)算 邏輯移位 邏輯移位的對(duì)象是無符號(hào)數(shù),移位結(jié)果只是數(shù)據(jù)各位在位置上發(fā)生了變化。 移位規(guī)則:邏輯左移時(shí),高位移出,低位補(bǔ)0;邏輯右移時(shí),低位移出,高位補(bǔ)0。移出數(shù)據(jù)位一般置入標(biāo)志位C(進(jìn)位/借位標(biāo)志)。移位規(guī)則如圖 2.5所示 如寄存器內(nèi)容為01010011,邏輯左移為10100110,邏輯右移為0010100。,圖 2.5 邏輯移位規(guī)則,2019/7/19,87,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.2 定點(diǎn)數(shù)的運(yùn)算 算術(shù)移位 算術(shù)移位對(duì)象是帶符號(hào)數(shù),移位結(jié)果是在數(shù)值的絕對(duì)值上進(jìn)行放大或縮小,同時(shí)符號(hào)位須保持不變。 對(duì)原碼,算術(shù)左移,符號(hào)位不變, 高位移出, 低位補(bǔ)0;算術(shù)右移,符號(hào)位不變, 低位移出, 高位補(bǔ)0。 對(duì)補(bǔ)碼,算術(shù)左移,符號(hào)位不變,高位移出,低位補(bǔ)0。當(dāng)左移移出的數(shù)據(jù)位正數(shù)為1,負(fù)數(shù)為0時(shí)發(fā)生溢出。因此,為保證補(bǔ)碼算術(shù)左移時(shí)不發(fā)生溢出,移位的數(shù)據(jù)最高有效位必須與符號(hào)位相同。,2019/7/19,88,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.2 定點(diǎn)數(shù)的運(yùn)算 算術(shù)移位 算術(shù)右移時(shí),符號(hào)位不變,低位移出,高位正數(shù)補(bǔ)0,負(fù)數(shù)補(bǔ)1。補(bǔ)碼的移碼規(guī)則如圖2.6所示。 反碼的算術(shù)移位規(guī)則:算術(shù)左移時(shí),最高有效位移入符號(hào)位,低位正數(shù)補(bǔ)0,負(fù)數(shù)補(bǔ)1;算術(shù)右移時(shí),符號(hào)位不變,高位補(bǔ)符號(hào)位,低位移出。,圖 2.6 補(bǔ)碼的算術(shù)移位規(guī)則規(guī)則,2019/7/19,89,2.2 定點(diǎn)數(shù)的表示和運(yùn)算 2.2.2 定點(diǎn)數(shù)的運(yùn)算 循環(huán)移位 循環(huán)移位是指所有的數(shù)據(jù)位在自身范圍內(nèi)進(jìn)行左移或者右移,左移時(shí)最高位移入最低位,右移時(shí)最低位移入最高位。 若與CF標(biāo)志位
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 寵物寄養(yǎng)寵物寵物用品定制寵物美容2025年度綜合服務(wù)協(xié)議3篇
- 2025委托代售印花稅票合同
- 二零二五年度內(nèi)墻乳膠漆施工與綠色裝飾材料供應(yīng)協(xié)議3篇
- 2025年度聯(lián)合體投標(biāo)環(huán)保評(píng)估合同3篇
- 2025年度全新農(nóng)村山塘承包合同(鄉(xiāng)村旅游開發(fā)合作)2篇
- 2025年度公司對(duì)公司跨境電商業(yè)務(wù)借款協(xié)議3篇
- 二零二五年度風(fēng)力發(fā)電機(jī)組安裝與運(yùn)維合同3篇
- 二零二五年度養(yǎng)殖場養(yǎng)殖保險(xiǎn)服務(wù)合同3篇
- 2025簡單技術(shù)咨詢合同范本
- 二零二五年度農(nóng)業(yè)農(nóng)機(jī)維修配件供應(yīng)合同3篇
- DB34T4868-2024智慧醫(yī)院醫(yī)用耗材院內(nèi)物流規(guī)范
- 2025年蛇年年會(huì)匯報(bào)年終總結(jié)大會(huì)模板
- 《稻草人》閱讀題及答案
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) X2-10-07-17 陶瓷產(chǎn)品設(shè)計(jì)師(試行)勞社廳發(fā)200633號(hào)
- 瑜伽基礎(chǔ)知識(shí)題庫單選題100道及答案解析
- 廣東省廣州市2024年中考數(shù)學(xué)真題試卷(含答案)
- 電磁場與電磁波(第五版)完整全套教學(xué)課件
- 風(fēng)能發(fā)電對(duì)養(yǎng)殖場廢棄物處理的影響
- 2024年海南省中考數(shù)學(xué)試題卷(含答案解析)
- 10MWP太陽能光伏并網(wǎng)發(fā)電電站項(xiàng)目電站的技術(shù)設(shè)計(jì)方案
- 孤殘兒童護(hù)理員技能鑒定考試題庫(含答案)
評(píng)論
0/150
提交評(píng)論