版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Ch2: Data Representation數(shù)據(jù)的機(jī)器級(jí)表示,第一講 數(shù)值數(shù)據(jù)的表示 第二講 非數(shù)值數(shù)據(jù)表示及 數(shù)據(jù)的寬度、存儲(chǔ)排列、糾/檢錯(cuò),第一講:數(shù)值數(shù)據(jù)的表示,主 要 內(nèi) 容 定點(diǎn)數(shù)的表示 進(jìn)位計(jì)數(shù)制 定點(diǎn)數(shù)的二進(jìn)制編碼 原碼、補(bǔ)碼、移碼表示 定點(diǎn)整數(shù)的表示 無(wú)符號(hào)整數(shù)、帶符號(hào)整數(shù) 浮點(diǎn)數(shù)格式和表示范圍 浮點(diǎn)數(shù)的規(guī)格化 IEEE754浮點(diǎn)數(shù)標(biāo)準(zhǔn) 單精度浮點(diǎn)數(shù)、雙精度浮點(diǎn)數(shù) 特殊數(shù)的表示形式 C語(yǔ)言程序中的整數(shù)類(lèi)型、浮點(diǎn)數(shù)類(lèi)型 十進(jìn)制數(shù)表示,信息的二進(jìn)制編碼,計(jì)算機(jī)的外部信息與內(nèi)部機(jī)器級(jí)數(shù)據(jù) 機(jī)器級(jí)數(shù)據(jù)分兩大類(lèi): 數(shù)值數(shù)據(jù):無(wú)符號(hào)整數(shù)、帶符號(hào)整數(shù)、浮點(diǎn)數(shù)(實(shí)數(shù))、十進(jìn)制數(shù) 非數(shù)值數(shù)據(jù)
2、:邏輯數(shù)(包括位串)、西文字符和漢字 計(jì)算機(jī)內(nèi)部所有信息都用二進(jìn)制(即:0和1)進(jìn)行編碼 用二進(jìn)制編碼的原因: 制造二個(gè)穩(wěn)定態(tài)的物理器件容易 二進(jìn)制編碼、計(jì)數(shù)、運(yùn)算規(guī)則簡(jiǎn)單 正好與邏輯命題對(duì)應(yīng),便于邏輯運(yùn)算,并可方便地用邏輯電路實(shí)現(xiàn)算術(shù)運(yùn)算 真值和機(jī)器數(shù) 機(jī)器數(shù):用0和1編碼的計(jì)算機(jī)內(nèi)部的0/1序列 真值:機(jī)器數(shù)真正的值,即:現(xiàn)實(shí)中帶正負(fù)號(hào)的數(shù),首先考慮數(shù)值數(shù)據(jù)的表示,C語(yǔ)言中哪些類(lèi)型是數(shù)值數(shù)據(jù)?哪些是非?,BACK,P.26 圖2.1,數(shù)值數(shù)據(jù)的表示,數(shù)值數(shù)據(jù)表示的三要素 進(jìn)位計(jì)數(shù)制 定、浮點(diǎn)表示 如何用二進(jìn)制編碼 即:要確定一個(gè)數(shù)值數(shù)據(jù)的值必須先確定這三個(gè)要素。 例如,機(jī)器數(shù) 010110
3、01的值是多少? 進(jìn)位計(jì)數(shù)制 十進(jìn)制、二進(jìn)制、十六進(jìn)制、八進(jìn)制數(shù)及其相互轉(zhuǎn)換 定/浮點(diǎn)表示(解決小數(shù)點(diǎn)問(wèn)題) 定點(diǎn)整數(shù)、定點(diǎn)小數(shù) 浮點(diǎn)數(shù)(可用一個(gè)定點(diǎn)小數(shù)和一個(gè)定點(diǎn)整數(shù)來(lái)表示) 定點(diǎn)數(shù)的編碼(解決正負(fù)號(hào)問(wèn)題) 原碼、補(bǔ)碼、反碼、移碼 (反碼很少用),答案是:不知道!,Sign and Magnitude (原碼的表示),容易理解, 但是: 0 的表示不唯一,不利于程序員編程 加、減運(yùn)算方式不統(tǒng)一 需額外對(duì)符號(hào)位進(jìn)行處理,不利于硬件設(shè)計(jì) 特別當(dāng) ab時(shí),實(shí)現(xiàn) a- b比較困難,從 50年代開(kāi)始,整數(shù)都采用補(bǔ)碼來(lái)表示 但浮點(diǎn)數(shù)的尾數(shù)用原碼定點(diǎn)小數(shù)表示,Binary,Decimal,-0 -1 -2
4、 -3 -4 -5 -6 -7,1000 1001 1010 1011 1100 1101 1110 1111,補(bǔ)碼特性 - 模運(yùn)算(modular運(yùn)算),時(shí)鐘是一種模-12系統(tǒng) 假定鐘表時(shí)針指向10點(diǎn),要將它撥向點(diǎn), 則有兩種撥法: 倒撥4格:10- 4 = 6 順撥8格:10+8 = 18 6 (mod 12) 模12系統(tǒng)中: 10- 4 10+8 (mod 12) - 4 8 (mod 12) 則,稱(chēng)8是- 4對(duì)模12的補(bǔ)碼。 同樣有 -3 9 (mod 12) -5 7 (mod 12)等,結(jié)論2: 對(duì)于某一確定的模,某數(shù)減去小于模的另一數(shù),總可以用該數(shù)加上另一數(shù)負(fù)數(shù)的補(bǔ)碼來(lái)代替。,補(bǔ)
5、碼(modular運(yùn)算):+ and 的統(tǒng)一,重要概念:在一個(gè)模運(yùn)算系統(tǒng)中,一個(gè)數(shù)與它除以“模”后的余數(shù)等價(jià)。,結(jié)論1: 一個(gè)負(fù)數(shù)的補(bǔ)碼等于模減該負(fù)數(shù)的絕對(duì)值。,模運(yùn)算系統(tǒng)舉例,例1:“鐘表”模運(yùn)算系統(tǒng) 假定時(shí)針只能順撥,從10點(diǎn)倒撥4格后是幾點(diǎn)? 10- 4 = 10+(12- 4) = 10+8 = 6 (mod 12) 例2:“4位十進(jìn)制數(shù)” 模運(yùn)算系統(tǒng) 假定算盤(pán)只有四檔,且只能做加法,則在算盤(pán)上計(jì)算 9828-1928等于多少? 9828-1928=9828+(104-1928) =9828+8072 = 1 7900 =7900(mod 104),運(yùn)算器是一個(gè)模運(yùn)算系統(tǒng),適合用補(bǔ)碼表
6、示和運(yùn)算,計(jì)算機(jī)中運(yùn)算器只有有限位。假定為n位,則運(yùn)算結(jié)果只能保留低n位,故可看成是個(gè)只有n檔的二進(jìn)制算盤(pán)。所以,其模為2n 。,補(bǔ)碼的定義 假定補(bǔ)碼有n位,則: 定點(diǎn)整數(shù):X補(bǔ)= 2n + X (-2nX 2n ,mod 2n) 定點(diǎn)小數(shù):X補(bǔ)= 2 + X (-1X1,mod 2),求特殊數(shù)的補(bǔ)碼, -1補(bǔ)= 2n - 001 = 111(n個(gè)1) (mod 2n),假定機(jī)器數(shù)有n位 -2n-1補(bǔ)= 2n - 2n-1 = 100(n-1個(gè)0) (mod 2n), -1.0補(bǔ)= 2 - 1.0 = 1.000(n-1個(gè)0) (mod 2), +0補(bǔ)= -0補(bǔ)= 000(n個(gè)0),補(bǔ)碼與真值
7、之間的簡(jiǎn)便轉(zhuǎn)換,例: 設(shè)機(jī)器數(shù)有8位,求123和-123的補(bǔ)碼表示。,解: 123 = 127- 4 = 01111111B - 100B = 01111011B -123= - 01111011B 01111011補(bǔ)= 28 + 01111011 = 100000000 + 01111011 = 01111011 (mod 28),即 7BH。 - 01111011補(bǔ)= 28 01111011 = 10000 0000 - 01111011 = 1111 1111 0111 1011 +1 = 1000 0100 +1 = 1000 0101,即 85H。,如何快速得到123的二進(jìn)制表示?,
8、Twos Complement (補(bǔ)碼的表示),正數(shù):符號(hào)位(sign bit)為0,數(shù)值部分不變 負(fù)數(shù):符號(hào)位為1,數(shù)值部分“各位取反,末位加1”,變形(模4)補(bǔ)碼:雙符號(hào),用于存放可溢出的中間結(jié)果。,如何求補(bǔ)碼的真值,根據(jù)補(bǔ)碼各位上的“權(quán)”,可以求出一個(gè)補(bǔ)碼的值,當(dāng)N=4時(shí),范圍為:-23 23 -1 (即:-8 +7) 當(dāng)N=32時(shí),范圍為:-231 231 -1,真值范圍:,令:A補(bǔ)= an-1an-2 a1a0 則: A= -an-1.2n-1+an-2 .2n-2+ a1 .21+ a0 .20,Excess (biased) notion- 移碼表示,什么是“excess (bi
9、ased) notation-移碼表示”? 將每一個(gè)數(shù)值加上一個(gè)偏置常數(shù)( Excess / bias) 一般來(lái)說(shuō),當(dāng)編碼位數(shù)為 n時(shí),bias取 2n-1 Ex. n=4: Ebiased = E+ 23 ( bias= 23 =10002 ) -8 (+8) 00002 -7 (+8) 00012 0 (+8) 10002 +7 (+8) 11112 為什么要用移碼來(lái)表示指數(shù)(階碼)? 便于浮點(diǎn)數(shù)加減運(yùn)算時(shí)的對(duì)階操作,例:1.01 x2 -1+1.11 x23,移碼主要用來(lái)表示浮點(diǎn)數(shù)階碼!,0的移碼表示惟一 移碼和補(bǔ)碼僅第一位不同,Unsigned integer(無(wú)符號(hào)整數(shù)),機(jī)器中字的
10、位排列順序有兩種方式:(例:32位字: 0010112) 高到低位從左到右:0000 0000 0000 0000 0000 0000 0000 1011 高到低位從右到左:1101 0000 0000 0000 0000 0000 0000 0000 MIPS采用高到低從左往右排列 Leftmost和rightmost這兩個(gè)詞有歧義,故用LSB(Least Significant Bit)來(lái)表示最低有效位,用MSB來(lái)表示最高有效位 一般在全部是正數(shù)運(yùn)算且不出現(xiàn)負(fù)值結(jié)果的場(chǎng)合下,可使用無(wú)符號(hào)數(shù)表示。例如,地址運(yùn)算 無(wú)符號(hào)數(shù)的編碼中沒(méi)有符號(hào)位 在字長(zhǎng)相同的情況下,它的表示范圍大于有符號(hào)數(shù) 無(wú)符號(hào)
11、數(shù)總是整數(shù),所以很多時(shí)候就簡(jiǎn)稱(chēng)為“無(wú)符號(hào)數(shù)” 最大8位無(wú)符號(hào)整數(shù)是11111111B,其值為255,Signed integer(帶符號(hào)整數(shù)),計(jì)算機(jī)必須能處理正數(shù)(positive) 和負(fù)數(shù)(negative),MSB表示數(shù)符 有三種表示方式 Signed magnitude (原碼) 用來(lái)表示浮點(diǎn)(實(shí))數(shù)的尾數(shù) Ones complement (反碼) 現(xiàn)已不用 Twos complement (補(bǔ)碼) 50年代以來(lái),所有計(jì)算機(jī)都用補(bǔ)碼來(lái)表示定點(diǎn)(整)數(shù) 為什么用補(bǔ)碼表示帶符號(hào)整數(shù)? 補(bǔ)碼運(yùn)算系統(tǒng)是模運(yùn)算系統(tǒng),加、減運(yùn)算統(tǒng)一 數(shù)0的表示惟一,方便使用 比原碼和反碼多表示一個(gè)最小負(fù)數(shù) 與移碼
12、相比,其符號(hào)位和真值的符號(hào)對(duì)應(yīng)關(guān)系清楚,C語(yǔ)言程序中的整數(shù),無(wú)符號(hào)數(shù):unsigned int ( short / long);帶符號(hào)整數(shù): int ( short / long),常在一個(gè)數(shù)的后面加一個(gè)“u”或“U”表示無(wú)符號(hào)數(shù),若同時(shí)有無(wú)符號(hào)數(shù)和帶符號(hào)整數(shù),則C編譯器隱含將帶符號(hào)整數(shù)強(qiáng)制轉(zhuǎn)換為無(wú)符號(hào)數(shù),假定以下關(guān)系表達(dá)式在32位用補(bǔ)碼表示的機(jī)器上執(zhí)行,結(jié)果是什么?,C語(yǔ)言程序中的整數(shù),帶*的結(jié)果與常規(guī)預(yù)想的相反!,Example: mantissa (尾數(shù)) exponent(階碼、指數(shù)) 6.02 x 10 21 decimal point radix (base,基) Normaliz
13、ed form(規(guī)格化形式): 小數(shù)點(diǎn)前只有一位非0數(shù) 同一個(gè)數(shù)有多種表示形式。例:對(duì)于數(shù) 1/1,000,000,000 Normalized (唯一的規(guī)格化形式): 1.0 x 10-9 Unnormalized(非規(guī)格化形式不唯一): 0.1 x 10-8, 10.0 x 10-10,科學(xué)計(jì)數(shù)法(Scientific Notation)與浮點(diǎn)數(shù),for Binary Numbers:,只要對(duì)尾數(shù)和指數(shù)分別編碼,就可表示一個(gè)浮點(diǎn)數(shù)(即:實(shí)數(shù)),浮點(diǎn)數(shù)(Floating Point)的表示范圍,例:畫(huà)出下述32位浮點(diǎn)數(shù)格式的表數(shù)范圍。 0 1 8 9 31 第0位數(shù)符S;第18位為8位移碼表
14、示階碼E(偏置常數(shù)為128);第931位為24位二進(jìn)制原碼小數(shù)表示的尾數(shù)M。規(guī)格化尾數(shù)的第一位總是1,故規(guī)定第一位默認(rèn)的“1”不明顯表示出來(lái)。這樣可用23個(gè)數(shù)位表示24位尾數(shù)。,S,階碼E,尾數(shù)M,最大正數(shù):0.111 x 2111 =(1-2-24) x 2127,最小正數(shù):0.100 x 2000 =(1/2) x 2-128,因?yàn)樵a是對(duì)稱(chēng)的,所以其表示范圍是關(guān)于原點(diǎn)對(duì)稱(chēng)的。,機(jī)器0:階碼為0 或 落在下溢區(qū)中的數(shù) 浮點(diǎn)數(shù)范圍比定點(diǎn)數(shù)大,但數(shù)的個(gè)數(shù)沒(méi)變多,故數(shù)之間更稀疏,且不均勻,浮點(diǎn)數(shù)的表示,Normal format(規(guī)格化數(shù)形式) : +/-1.xxxxxxxxxxtwo x 2E
15、xponent 32-bit 規(guī)格化數(shù): 31 0 S Exponent Significand 1 bit ? bits ? bits S 是符號(hào)位(Sign) Exponent用 excess (or biased) notation(移碼/增碼)來(lái)表示 Significand 表示 xxxxxxxxxxxxx,尾數(shù)部分 (基可以是 2/ 4 / 8 / 16,約定信息,無(wú)需顯式表示 ) 早期的計(jì)算機(jī),各自定義自己的浮點(diǎn)數(shù)格式,問(wèn)題:浮點(diǎn)數(shù)表示不統(tǒng)一會(huì)帶來(lái)什么問(wèn)題?,小數(shù)點(diǎn)前面總是“1”,故可隱含表示,“Father” of the IEEE 754 standard,現(xiàn)在所有計(jì)算機(jī)都采用
16、IEEE754來(lái)表示浮點(diǎn)數(shù),1970年代后期, IEEE成立委員會(huì)著手制定浮點(diǎn)數(shù)標(biāo)準(zhǔn),1985年完成浮點(diǎn)數(shù)標(biāo)準(zhǔn)IEEE754的制定,直到80年代初,各個(gè)機(jī)器內(nèi)部的浮點(diǎn)數(shù)表示格式還沒(méi)有統(tǒng)一 因而相互不兼容,機(jī)器之間傳送數(shù)據(jù)時(shí),帶來(lái)麻煩,IEEE 754 Floating Point Standard,Single Precision : ( Double Precision is similar ) S Exponent Significand 1 bit 8 bits 23 bits, Sign bit: 1 表示negative ; 0表示 positive,Significand(尾數(shù)):
17、 規(guī)格化尾數(shù)最高位總是1,所以隱含表示,省1位 1 + 23 bits ( single),1 + 52 bits (double),Exponent(階碼 / 指數(shù)): SP規(guī)格化數(shù)階碼范圍為0000 0001 (-126) 1111 1110 (127) bias為127 (single), 1023 (double),SP: (-1)S x (1 + Significand) x 2(Exponent-127),DP: (-1)S x (1 + Significand) x 2(Exponent-1023),全0和全1用來(lái)表示特殊值!,為什么用127?若用128,則階碼范圍為多少?,Ex
18、: Converting Binary FP to Decimal,10111 1101 110 0000 0000 0000 0000 0000,Sign: 1 = negative,Exponent: 0111 1101two = 125ten Bias adjustment: 125 - 127 = -2,Significand: 1 + 1x2-1+ 1x2-2 + 0 x2-3 + 0 x2-4 + 0 x2-5 +. =1+2-1 +2-2 = 1+0.5 +0.25 = 1.75,Represents: -1.75tenx2-2 = -0.4375 (= -4.375x10-1
19、),(-1)S x (1 + Significand) x 2(Exponent-127),BEE00000H is the hex. Rep. Of an IEEE 754 SP FP number,Ex: Converting Decimal to FP,-1.275 x 101,1. Denormalize: -12. 75,2. Convert integer part: 12 = 8 + 4 = 11002,3. Convert fractional part: .75 = .5 + .25 = .112,4. Put parts together and normalize: 11
20、00.11 = 1.10011 x 23,5. Convert exponent: 127 + 3 = 128 + 2 = 1000 00102,11000 0010 100 1100 0000 0000 0000 0000,The Hex rep. is C14C0000H,Normalized numbers(規(guī)格化數(shù)),Exponent Significand Object 1-254 anything Norms implicit leading 1 0 0 ? 0 nonzero ? 255 0 ? 255 nonzero ?,前面的定義都是針對(duì)規(guī)格化數(shù)(normalized for
21、m) How about other patterns?,Representation for 0,How to represent 0? exponent: all zeros significand: all zeros What about sign? Both cases valid. +0: 0 00000000 00000000000000000000000 -0: 1 00000000 00000000000000000000000,Representation for +/-,How to represent +/-? Exponent : all ones (11111111
22、B = 255) Significand: all zeros + : 0 11111111 00000000000000000000000 - : 1 11111111 00000000000000000000000,Operations 5 / 0 = +, -5 / 0 = - 5+(+) = +, (+)+(+) = + 5 - (+) = -, (-) - (+) = - etc,為什么要這樣處理? 可以利用+/-作比較。 例如:X/0Y可作為有效比較,In FP, 除數(shù)為0的結(jié)果是 +/- , 不是溢出異常., :infinity,Representation for “Not a
23、 Number”,Sqrt (- 4.0) = ? 0/0 = ? Called Not a Number (NaN) - “非數(shù)”,Operations sqrt (-4.0) = NaN 0/0 = NaN op (NaN,x) = NaN +(-) = NaN +- (+) = NaN / = NaN etc.,How to represent NaN Exponent = 255 Significand: nonzero NaNs can help with debugging,What have we defined so far? (for SP),Representation f
24、or Denorms(非規(guī)格化數(shù)),Used to represent Denormalized numbers,Exponent Significand Object 0 0 +/-0 0 nonzero Denorms 1-254 anything Norms implicit leading 1 255 0 +/- infinity 255 nonzero NaN,Representation for Denorms,2-126,2-125,2-124,2-123,1.00 x2-126 1.11x2-126,0.00 x2-126 0.11x2-126,2-126,2-125,2-12
25、4,2-123,0,0,GAP,(-1)s0.aaa 2-126,Questions about IEEE 754,Whats the range of representable values? The largest number for single: +1.111X 2127 How about double? What about following type converting: not always true! if ( i = (int) (float) i) ) printf (“true”); if ( f = (float) (int) f) ) printf (“tr
26、ue”); How about FP add associative? FALSE! x = 1.5 x 1038, y = 1.5 x 1038, z = 1.0 (x+y)+z = (1.5x1038+1.5x1038 ) +1.0 = 1.0 x+(y+z) = 1.5x1038+ (1.5x1038+1.0) = 0.0,How about double?,How about double?,True!,Not always true!,約 +3.4 X 1038,約 +1.8 X 10308,數(shù)值數(shù)據(jù)(numerical data)的兩種表示 Binary (二進(jìn)制數(shù)) 定點(diǎn)整數(shù):F
27、ixed-point number (integer) Unsigned and signed int 浮點(diǎn)數(shù):Floating-point number (real number) Decimal (十進(jìn)制數(shù)) 用ASCII碼表示 用BCD(Binary coded Decimal)碼表示 計(jì)算機(jī)中為什么要用十進(jìn)制數(shù)表示數(shù)值? 日常使用的都是十進(jìn)制數(shù),所以,計(jì)算機(jī)外部都使用十進(jìn)制數(shù)。在一些有大量數(shù)據(jù)輸入/出的系統(tǒng)中,為減少二進(jìn)制數(shù)和十進(jìn)制數(shù)之間的轉(zhuǎn)換,在計(jì)算機(jī)內(nèi)部直接用十進(jìn)制數(shù)表示數(shù)值。,十進(jìn)制數(shù)的表示,用ASCII碼表示十進(jìn)制數(shù),前分隔數(shù)字串 符號(hào)位單獨(dú)用一個(gè)字節(jié)表示,位于數(shù)字串之前。 正
28、號(hào)用“+”的ASCII碼(2BH)表示;負(fù)號(hào)用“-”的ASCII碼(2DH)表示 例:十進(jìn)制數(shù)+236表示為: 2B 32 33 36H 0010 1011 0011 0010 0011 0011 0011 0110B 十進(jìn)制數(shù)-2369表示為: 2D 32 33 36 39H 0010 1101 0011 0010 0011 0011 0011 0110 0011 1001B 后嵌入數(shù)字串 符號(hào)位嵌入最低位數(shù)字的ASCII碼高4位中。比前分隔方式省一個(gè)字節(jié)。 正數(shù)不變;負(fù)數(shù)高4位變?yōu)?111. 例:十進(jìn)制數(shù)+236表示為: 32 33 36H 0011 0010 0011 0011 0011
29、 0110B 十進(jìn)制數(shù)-2369表示為: 32 33 36 79H 0011 0010 0011 0011 0011 0110 0111 1001B 缺點(diǎn):占空間大,且需轉(zhuǎn)換成二進(jìn)制數(shù)或BCD碼才能計(jì)算。,編碼思想: 每個(gè)十進(jìn)數(shù)位至少有4位二進(jìn)制表示。而4位二進(jìn)制位可組合成16種狀態(tài),去掉10種狀態(tài)后還有6種冗余狀態(tài)。 編碼方案 1 十進(jìn)制有權(quán)碼 每個(gè)十進(jìn)制數(shù)位的4個(gè)二進(jìn)制位(稱(chēng)為基2碼)都有一個(gè)確定的權(quán)。8421碼是最常用的十進(jìn)制有權(quán)碼。也稱(chēng)自然BCD(NBCD)碼。 2 十進(jìn)制無(wú)權(quán)碼 每個(gè)十進(jìn)制數(shù)位的4個(gè)基2碼沒(méi)有確定的權(quán)。在無(wú)權(quán)碼方案中,用的較多的是余3碼和格雷碼。 3其他編碼方案 (5
30、中取2碼、獨(dú)熱碼等) 符號(hào)位的表示: “+”:1100 ; “-”:1101 例:+236=(1100 0010 0011 0110)8421 (占2個(gè)字節(jié)) - 2369=(1101 0000 0010 0011 0110 1001)8421 (占3個(gè)字節(jié)),用BCD碼表示十進(jìn)制數(shù),補(bǔ)0以使數(shù)占滿(mǎn)一個(gè)字節(jié),第一講小結(jié),在機(jī)器內(nèi)部編碼后的數(shù)稱(chēng)為機(jī)器數(shù),其值稱(chēng)為真值 定義數(shù)值數(shù)據(jù)有三個(gè)要素:進(jìn)制、定點(diǎn)/浮點(diǎn)、編碼 整數(shù)的表示 無(wú)符號(hào)數(shù):正整數(shù),用來(lái)表示地址等;帶符號(hào)整數(shù):用補(bǔ)碼表示 C語(yǔ)言中的整數(shù) 無(wú)符號(hào)數(shù):unsigned int ( short / long);帶符號(hào)數(shù): int ( sho
31、rt / long) 浮點(diǎn)數(shù)的表示 符號(hào);尾數(shù):定點(diǎn)小數(shù);指數(shù)(階):定點(diǎn)整數(shù)(基不用表示) 浮點(diǎn)數(shù)的范圍 正上溢、正下溢、負(fù)上溢、負(fù)下溢;與階碼的位數(shù)和基的大小有關(guān) 浮點(diǎn)數(shù)的精度:與尾數(shù)的位數(shù)和是否規(guī)格化有關(guān) 浮點(diǎn)數(shù)的表示(IEEE754標(biāo)準(zhǔn)):?jiǎn)尉萐P(float)和雙精度DP(double) 規(guī)格化數(shù)(SP):階碼1254,尾數(shù)最高位隱含為1 “零” (階為全0,尾為全0) (階為全1,尾為全0) NaN (階為全1,尾為非0) 非規(guī)格化數(shù) (階為全0,尾為非0,沒(méi)有隱藏位) 十進(jìn)制數(shù)的表示:用ASCII碼或BCD碼表示,第二講 非數(shù)值數(shù)據(jù)、數(shù)據(jù)排列、糾/檢錯(cuò),主 要 內(nèi) 容 非數(shù)值數(shù)
32、據(jù)的表示 邏輯數(shù)據(jù)、西文字符、漢字 數(shù)據(jù)的寬度 數(shù)據(jù)的存儲(chǔ)排列 大端方式、小端方式 數(shù)據(jù)的糾錯(cuò)和檢錯(cuò) 奇偶校驗(yàn)、海明校驗(yàn)、循環(huán)冗余校驗(yàn),表示 用一位表示 真:1 / 假:0 N位二進(jìn)制數(shù)可表示N個(gè)邏輯數(shù)據(jù),或一個(gè)位串 運(yùn)算 按位進(jìn)行 如:按位與 / 按位或 / 邏輯左移 / 邏輯右移 等 識(shí)別 邏輯數(shù)據(jù)和數(shù)值數(shù)據(jù)在形式上并無(wú)差別,也是一串0/1序列,機(jī)器靠指令來(lái)識(shí)別。,邏輯數(shù)據(jù)的編碼表示,特點(diǎn) 是一種拼音文字,用有限幾個(gè)字母可拼寫(xiě)出所有單詞 只對(duì)有限個(gè)字母和數(shù)學(xué)符號(hào)、標(biāo)點(diǎn)符號(hào)等輔助字符編碼 所有字符總數(shù)不超過(guò)256個(gè),使用7或8個(gè)二進(jìn)位可表示 表示(常用編碼為7位ASCII碼) 要求必須熟悉數(shù)
33、字、字母和空格(SP)的表示 十進(jìn)制數(shù)字:0/1/2/9 英文字母:A/B/Z/a/b/z 專(zhuān)用符號(hào):+/-/%/*/&/ 控制字符(不可打印或顯示) 操作 字符串操作,如:傳送/比較等,西文字符的編碼表示,特點(diǎn) 漢字是表意文字,一個(gè)字就是一個(gè)方塊圖形。 漢字?jǐn)?shù)量巨大,總數(shù)超過(guò)6萬(wàn)字,給漢字在計(jì)算機(jī)內(nèi)部的表示、漢字的傳輸與交換、漢字的輸入和輸出等帶來(lái)了一系列問(wèn)題。 編碼形式 有以下幾種漢字代碼: 輸入碼:對(duì)漢字用相應(yīng)按鍵進(jìn)行編碼表示,用于輸入 內(nèi)碼:用于在系統(tǒng)中進(jìn)行存儲(chǔ)、查找、傳送等處理 字模點(diǎn)陣或輪廓描述: 描述漢字字模點(diǎn)陣或輪廓,用于顯示/打印,漢字及國(guó)際字符的編碼表示,問(wèn)題:西文字符有沒(méi)
34、有輸入碼?有沒(méi)有內(nèi)碼?有沒(méi)有字模點(diǎn)陣或輪廓描述?,向計(jì)算機(jī)輸入漢字的方式: 手寫(xiě)漢字聯(lián)機(jī)識(shí)別輸入,或者是印刷漢字掃描輸入后自動(dòng)識(shí)別,這兩種方法現(xiàn)均已達(dá)到實(shí)用水平。 用語(yǔ)音輸入漢字,雖然簡(jiǎn)單易操作,但離實(shí)用階段還相差很遠(yuǎn)。 利用英文鍵盤(pán)輸入漢字:每個(gè)漢字用一個(gè)或幾個(gè)鍵表示,這種對(duì)每個(gè)漢字用相應(yīng)按鍵進(jìn)行的編碼稱(chēng)為漢字“輸入碼”,又稱(chēng)外碼。輸入碼的碼元為按鍵。是最簡(jiǎn)便、最廣泛的漢字輸入方法。 常用的方法有:搜狗拼音、五筆字型、智能ABC、微軟拼音等 使用漢字輸入碼的原因: 鍵盤(pán)面向西文設(shè)計(jì),一個(gè)或兩個(gè)西文字符對(duì)應(yīng)一個(gè)按鍵,非常方便。 漢字是大字符集,專(zhuān)門(mén)的漢字輸入鍵盤(pán)由于鍵多、查找不便、成本高等原因
35、而幾乎無(wú)法采用。,漢字的輸入碼,問(wèn)題:西文字符常用的內(nèi)碼是什么?其內(nèi)碼就是ASCII碼。 對(duì)于漢字內(nèi)碼的選擇,必須考慮以下幾個(gè)因素: 不能有二義性,即不能和ASCII碼有相同的編碼。 盡量與漢字在字庫(kù)中的位置有關(guān),便于漢字查找和處理。 編碼應(yīng)盡量短。 國(guó)標(biāo)碼(國(guó)標(biāo)交換碼) 1981年我國(guó)頒布了信息交換用漢字編碼字符集基本集(GB231280)。該標(biāo)準(zhǔn)選出6763個(gè)常用漢字,為每個(gè)漢字規(guī)定了標(biāo)準(zhǔn)代碼,以供漢字信息在不同計(jì)算機(jī)系統(tǒng)間交換使用 可在漢字國(guó)標(biāo)碼的基礎(chǔ)上產(chǎn)生漢字機(jī)內(nèi)碼,字符集與漢字的內(nèi)碼,由三部分組成: 字母、數(shù)字和各種符號(hào),包括英文、俄文、日文平假名與片假名、羅馬字母、漢語(yǔ)拼音等共68
36、7個(gè) 一級(jí)常用漢字,共3755個(gè),按漢語(yǔ)拼音排列 二級(jí)常用漢字,共3008個(gè) ,不太常用,按偏旁部首排列 漢字的區(qū)位碼 碼表由94行、94列組成,行號(hào)為區(qū)號(hào),列號(hào)為位號(hào),各占7位 指出漢字在碼表中的位置,共14位,區(qū)號(hào)在左、位號(hào)在右 漢字的國(guó)標(biāo)碼 每個(gè)漢字的區(qū)號(hào)和位號(hào)各自加上32(20H),得到其“國(guó)標(biāo)碼” 國(guó)標(biāo)碼中區(qū)號(hào)和位號(hào)各占7位。在計(jì)算機(jī)內(nèi)部,為方便處理與存儲(chǔ),前面添一個(gè)0,構(gòu)成一個(gè)字節(jié),GB2312-80字符集,漢字內(nèi)碼,至少需2個(gè)字節(jié)才能表示一個(gè)漢字內(nèi)碼。為什么? 由漢字的總數(shù)決定! 可在GB2312國(guó)標(biāo)碼的基礎(chǔ)上產(chǎn)生漢字內(nèi)碼 為與ASCII碼區(qū)別,將國(guó)標(biāo)碼的兩個(gè)字節(jié)的第一位置“1”
37、后得到一種漢字內(nèi)碼 例如,漢字“大”在碼表中位于第20行、第83列。因此區(qū)位碼為0010100 1010011,國(guó)標(biāo)碼為00110100 01110011,即3473H。前面的34H和字符“4”的ACSII碼相同,后面的73H和字符“s”的ACSII碼相同,將每個(gè)字節(jié)的最高位各設(shè)為“1”后,就得到其內(nèi)碼:B4F3H (1011 0100 1111 0011B),因而不會(huì)和ASCII碼混淆。,國(guó)際字符集,國(guó)際字符集的必要性 不同地區(qū)使用不同字符集內(nèi)碼,如中文GB2312 / Big5、日文Shift-JIS / EUC-JP等。在安裝中文系統(tǒng)的計(jì)算機(jī)中打開(kāi)日文文件,會(huì)出現(xiàn)亂碼。 為使所有國(guó)際字符
38、都能互換,必須創(chuàng)建一種涵蓋全部字符的多字符集。 國(guó)際多字符集 通過(guò)對(duì)各種地區(qū)性字符集規(guī)定使用范圍來(lái)唯一定義各字符的編碼。 國(guó)際標(biāo)準(zhǔn)ISO/IEC 10646提出了一種包括全世界現(xiàn)代書(shū)面語(yǔ)言文字所使用的所有字符的標(biāo)準(zhǔn)編碼,有4個(gè)字節(jié)編碼(UCS-4)和2字節(jié)編碼(UCS-2) 。 我國(guó)(包括香港、臺(tái)灣地區(qū))與日本、韓國(guó)聯(lián)合制訂了一個(gè)統(tǒng)一的漢字字符集(CJK編碼),共收集了上述不同國(guó)家和地區(qū)共約2萬(wàn)多漢字及符號(hào),采用2字節(jié)編碼 (即:UCS-2) ,已被批準(zhǔn)為國(guó)家標(biāo)準(zhǔn)(GB13000 )。 Windows操作系統(tǒng)(中文版)已采用中西文統(tǒng)一編碼,收集了中、日、韓三國(guó)常用的約2萬(wàn)漢字,稱(chēng)為“Unico
39、de”,采用2字節(jié)編碼,與UCS-2一致 。,為便于打印、顯示漢字,漢字字形必須預(yù)先存在機(jī)內(nèi) 字庫(kù) (font):所有漢字形狀的描述信息集合 不同字體 (如宋體、仿宋、楷體、黑體等) 對(duì)應(yīng)不同字庫(kù) 從字庫(kù)中找到字形描述信息,然后送設(shè)備輸出 字形主要有兩種描述方法: 字模點(diǎn)陣描述(圖像方式) 輪廓描述(圖形方式) 直線(xiàn)向量輪廓 曲線(xiàn)輪廓(True Type字形),漢字的字模點(diǎn)陣碼和輪廓描述,數(shù)據(jù)的基本寬度,比特(bit)是計(jì)算機(jī)中處理、存儲(chǔ)、傳輸信息的最小單位 二進(jìn)制信息的計(jì)量單位是“字節(jié)”(Byte),也稱(chēng)“位組” 現(xiàn)代計(jì)算機(jī)中,存儲(chǔ)器按字節(jié)編址 字節(jié)是最小可尋址單位 (addressable
40、 unit ) 除比特和字節(jié)外,還經(jīng)常使用“字”(word)作為單位 “字”和 “字長(zhǎng)”的概念不同,數(shù)據(jù)的基本寬度,“字”和 “字長(zhǎng)”的概念不同 “字長(zhǎng)”指數(shù)據(jù)通路的寬度。 (數(shù)據(jù)通路指CPU內(nèi)部數(shù)據(jù)流經(jīng)的路徑以及路徑上的部件,主要是CPU內(nèi)部進(jìn)行數(shù)據(jù)運(yùn)算、存儲(chǔ)和傳送的部件,這些部件的寬度基本上要一致,才能相互匹配。因此,“字長(zhǎng)”等于CPU內(nèi)部總線(xiàn)的寬度、運(yùn)算器的位數(shù)、通用寄存器的寬度等。 ) “字”表示被處理信息的單位,用來(lái)度量數(shù)據(jù)類(lèi)型的寬度。 字和字長(zhǎng)的寬度可以一樣,也可不同。 例如,x86體系結(jié)構(gòu)定義“字”的寬度為16位,但從386開(kāi)始字長(zhǎng)就是32位了。,數(shù)據(jù)量的度量單位,存儲(chǔ)二進(jìn)制信息
41、時(shí)的度量單位要比字節(jié)或字大得多 容量經(jīng)常使用的單位有: “千字節(jié)”(KB),1KB=210字節(jié)=1024B “兆字節(jié)”(MB),1MB=220字節(jié)=1024KB “千兆字節(jié)”(GB),1GB=230字節(jié)=1024MB “兆兆字節(jié)”(TB),1TB=240字節(jié)=1024GB 通信中的帶寬使用的單位有: “千比特/秒”(kb/s),1kbps=103 b/s=1000 bps “兆比特/秒”(Mb/s),1Mbps=106 b/s =1000 kbps “千兆比特/秒”(Gb/s),1Gbps=109 b/s =1000 Mbps “兆兆比特/秒”(Tb/s),1Tbps=1012 b/s =10
42、00 Gbps,如果把b換成B,則表示字節(jié)而不是比特(位) 例如,10MBps表示 10兆字節(jié)/秒,程序中數(shù)據(jù)類(lèi)型的寬度,高級(jí)語(yǔ)言支持多種類(lèi)型、多種長(zhǎng)度的數(shù)據(jù) 例如,C語(yǔ)言中Char類(lèi)型的寬度為1個(gè)字節(jié),可表示一個(gè)字符(非數(shù)值數(shù)據(jù)),也可表示一個(gè)8位的整數(shù)(數(shù)值數(shù)據(jù)) 不同機(jī)器上表示的同一種類(lèi)型的數(shù)據(jù)可能寬度不同 必須確定相應(yīng)的機(jī)器級(jí)數(shù)據(jù)表示方式和相應(yīng)的處理指令 (在第五章指令系統(tǒng)介紹具體指令),C語(yǔ)言中數(shù)值數(shù)據(jù)類(lèi)型的寬度 (單位:字節(jié)),從表中看出:同類(lèi)型數(shù)據(jù)并不是所有機(jī)器都采用相同的寬度,分配的字節(jié)數(shù)隨機(jī)器字長(zhǎng)和編譯器的不同而不同。,Compaq Alpha是一個(gè)針對(duì)高端應(yīng)用的64位機(jī)器,
43、即字長(zhǎng)為64位,數(shù)據(jù)的存儲(chǔ)和排列順序,80年代開(kāi)始,幾乎所有機(jī)器都用字節(jié)編址 ISA設(shè)計(jì)時(shí)要考慮的兩個(gè)問(wèn)題: 如何從一個(gè)字節(jié)地址中取到一個(gè)32位的字?- 字的存放問(wèn)題 一個(gè)字能否存放在任何字節(jié)邊界?- 字的邊界對(duì)齊問(wèn)題,例如,若 int i = 0 x01234567,存放在內(nèi)存100號(hào)單元,則用“取數(shù)”指令訪(fǎng)問(wèn)100號(hào)單元取出 i 時(shí),必須清楚i的4個(gè)字節(jié)是如何存放的。,大端方式(Big Endian): MSB所在的地址是數(shù)的地址 e.g. IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA 小端方式( Little Endian): LSB所在的地
44、址是數(shù)的地址 e.g. Intel 80 x86, DEC VAX,有些機(jī)器兩種方式都支持,可以通過(guò)特定的控制位來(lái)設(shè)定采用哪種方式。,BIG Endian versus Little Endian,Ex1: Memory layout of a number ABCDH located in 1000,Ex2: Memory layout of a number 00ABCDEFH located in 1000,1001 1000,1001 1000,1000 1001 1002 1003,1003 1002 1001 1000,BIG Endian versus Little Endian
45、,Ex3: Memory layout of a instruction located in 1000,假定小端機(jī)器中指令:mov AX, 0 x12345(BX) 其中操作碼mov為40H,寄存器AX和BX分別為0001B和0010B,立即數(shù)占32位,則存放順序?yàn)椋?若在大端機(jī)器上,則存放順序如何?,Byte Swap Problem(字節(jié)交換問(wèn)題),78,56,34,12,0,1,2,3,increasing byte address,Big Endian,12,34,56,78,0,1,2,3,Little Endian,每個(gè)系統(tǒng)內(nèi)部是一致的,但在系統(tǒng)間通信時(shí)可能會(huì)發(fā)生問(wèn)題! 因?yàn)轫樞?/p>
46、不同,需要進(jìn)行順序轉(zhuǎn)換 音、視頻和圖像等文件格式或處理程序都涉及到字節(jié)順序問(wèn)題 ex. Little endian: GIF, PC Paintbrush, Microsoft RTF,etc Big endian: Adobe Photoshop, JPEG, MacPaint, etc,上述存放在0號(hào)單元的數(shù)據(jù)(字)是什么?,12345678H? 78563412H?,存放方式不同的機(jī)器間程序移植或數(shù)據(jù)通信時(shí),會(huì)發(fā)生什么問(wèn)題?,Alignment(對(duì)齊),目前機(jī)器字長(zhǎng)一般為32位或64位,而存儲(chǔ)器地址按字節(jié)編址 指令系統(tǒng)支持對(duì)字節(jié)、半字、字及雙字的運(yùn)算,也有位處理指令 各種不同長(zhǎng)度的數(shù)據(jù)存
47、放時(shí),有兩種處理方式: 按邊界對(duì)齊 (假定字的寬度為32位,按字節(jié)編址) 字地址:4的倍數(shù)(低兩位為0) 半字地址:2的倍數(shù)(低位為0) 字節(jié)地址:任意 不按邊界對(duì)齊 壞處:可能會(huì)增加訪(fǎng)存次數(shù)! (學(xué)了第四章存儲(chǔ)器組織后會(huì)更明白?。?Alignment: 要求數(shù)據(jù)的地址是相應(yīng)的邊界地址,示例 假設(shè)數(shù)據(jù)順序:字-半字-雙字-字節(jié)-半字- 按邊界對(duì)齊 邊界不對(duì)齊,Alignment(對(duì)齊),如:int i, short k, double x, char c, short j,則:,則: ,x:3個(gè)周期 j:2個(gè)周期,x:2個(gè)周期 j:1個(gè)周期,增加了訪(fǎng)存次數(shù)!,數(shù)據(jù)的檢/糾錯(cuò)(Error Det
48、ect/Correct),為什么要進(jìn)行數(shù)據(jù)的錯(cuò)誤檢測(cè)與校正? 存取和傳送時(shí),由于元器件故障或噪音干擾等原因會(huì)出現(xiàn)差錯(cuò)。措施: (1) 從計(jì)算機(jī)硬件本身的可靠性入手,在電路、電源、布線(xiàn)等各方面采取必要的措施,提高計(jì)算機(jī)的抗干擾能力; (2) 采取相應(yīng)的數(shù)據(jù)檢錯(cuò)和校正措施,自動(dòng)地發(fā)現(xiàn)并糾正錯(cuò)誤。 如何進(jìn)行錯(cuò)誤檢測(cè)與校正? 大多采用“冗余校驗(yàn)”思想,即除原數(shù)據(jù)信息外,還增加若干位編碼,這些新增的代碼被稱(chēng)為校驗(yàn)位。,數(shù)據(jù)的檢/糾錯(cuò),比較的結(jié)果為以下三種情況之一: 沒(méi)有檢測(cè)到錯(cuò)誤,得到的數(shù)據(jù)位直接傳送出去。 檢測(cè)到差錯(cuò),并可以糾錯(cuò)。數(shù)據(jù)位和比較結(jié)果一起送入糾錯(cuò)器,將正確數(shù)據(jù)位傳送出去。 檢測(cè)到錯(cuò)誤,但無(wú)
49、法確認(rèn)哪位出錯(cuò),因而不能進(jìn)行糾錯(cuò)處理,此時(shí),報(bào)告出錯(cuò)情況。,BACK,碼字和碼距,什么叫碼距? 由若干位代碼組成的一個(gè)字叫“碼字” 兩個(gè)碼字中具有不同代碼的位的個(gè)數(shù)叫這兩個(gè)碼字間的“距離” 碼制中各碼字間最小距離為“碼距”,它就是這個(gè)碼制的距離。 問(wèn)題:“8421”碼的碼距是幾? 2(0010)和3(0011)間距離為1,“8421”碼制的碼距為1。 數(shù)據(jù)校驗(yàn)中“碼字”指數(shù)據(jù)位和校驗(yàn)位按某種規(guī)律排列得到的代碼 碼距與檢錯(cuò)、糾錯(cuò)能力的關(guān)系(當(dāng)d4) 若碼距d為奇數(shù),則能發(fā)現(xiàn)d-1位錯(cuò),或能糾正(d-1)/2位錯(cuò)。 若碼距d為偶數(shù),則能發(fā)現(xiàn)d/2位錯(cuò),并能糾正(d/2-1)位錯(cuò)。 常用的數(shù)據(jù)校驗(yàn)碼
50、有: 奇偶校驗(yàn)碼、海明校驗(yàn)碼、循環(huán)冗余校驗(yàn)碼。,奇偶校驗(yàn)碼,基本思想:增加一位奇(偶)校驗(yàn)位并一起存儲(chǔ)或傳送,根據(jù)終部件得到的相應(yīng)數(shù)據(jù)和校驗(yàn)位,再求出新校驗(yàn)位,最后根據(jù)新校驗(yàn)位確定是否發(fā)生了錯(cuò)誤。 實(shí)現(xiàn)原理:假設(shè)數(shù)據(jù)B=bn-1bn-2.b1b0從源部件傳送至終部件。在終部件接收到的數(shù)據(jù)為B=bn-1bn-2.b1b0。 第一步:在源部件求出奇(偶)校驗(yàn)位P。 若采用奇校驗(yàn),則P=bn-1bn-2 .b1b01。 若采用偶校驗(yàn),則P=bn-1bn-2 .b1b0。 第二步:在終部件求出奇(偶)校驗(yàn)位P。 若采用奇校驗(yàn),則P= bn-1bn-2 .b1b01。 若采用偶校驗(yàn),則P=bn-1bn-
51、2 .b1b0。 第三步:計(jì)算最終的校驗(yàn)位P*,并根據(jù)其值判斷有無(wú)奇偶錯(cuò)。 假定P在終部件接受到的值為P,則P*= PP” 若P*=1,則表示終部件接受的數(shù)據(jù)有奇數(shù)位錯(cuò)。 若P*=0,則表示終部件接受的數(shù)據(jù)正確或有偶數(shù)個(gè)錯(cuò)。,奇偶校驗(yàn)法的特點(diǎn),問(wèn)題:奇偶校驗(yàn)碼的碼距是幾?為什么? 碼距d=2。 在奇偶校驗(yàn)碼中,若兩個(gè)數(shù)中有奇數(shù)位不同,則它們相應(yīng)的校驗(yàn)位就不同;若有偶數(shù)位不同,則雖校驗(yàn)位相同,但至少有兩位數(shù)據(jù)位不同。因而任意兩個(gè)碼字之間至少有兩位不同。 特點(diǎn) 根據(jù)碼距和糾/檢錯(cuò)能力的關(guān)系,它只能發(fā)現(xiàn)奇數(shù)位出錯(cuò),不能發(fā)現(xiàn)偶數(shù)位出錯(cuò),而且也不能確定發(fā)生錯(cuò)誤的位置,不具有糾錯(cuò)能力。 開(kāi)銷(xiāo)小,適用于校驗(yàn)
52、一字節(jié)長(zhǎng)的代碼,故常被用于存儲(chǔ)器讀寫(xiě)檢查或按字節(jié)傳輸過(guò)程中的數(shù)據(jù)校驗(yàn) 因?yàn)橐蛔止?jié)長(zhǎng)的代碼發(fā)生錯(cuò)誤時(shí),1位出錯(cuò)的概率較大,兩位以上出錯(cuò)則很少,所以可用奇偶校驗(yàn)。,海明校驗(yàn)碼,由Richard Hamming于1950年提出,目前還被廣泛使用。 主要用于存儲(chǔ)器中數(shù)據(jù)存取校驗(yàn)。 基本思想:奇偶校驗(yàn)碼對(duì)整個(gè)數(shù)據(jù)編碼生成一位校驗(yàn)位。因此這種校驗(yàn)碼檢錯(cuò)能力差,并且沒(méi)有糾錯(cuò)能力。如果將整個(gè)數(shù)據(jù)按某種規(guī)律分成若干組,對(duì)每組進(jìn)行相應(yīng)的奇偶檢測(cè),就能提供多位檢錯(cuò)信息,從而對(duì)錯(cuò)誤位置進(jìn)行定位,并將其糾正。 海明校驗(yàn)碼實(shí)質(zhì)上就是一種多重奇偶校驗(yàn)碼。 處理過(guò)程: 最終比較時(shí)按位進(jìn)行異或,以確定是否有差錯(cuò)。 這種異或操作
53、所得到的結(jié)果稱(chēng)為故障字(syndrome word)。顯然,校驗(yàn)碼和故障字的位數(shù)是相同。,每一組一個(gè)校驗(yàn)位,校驗(yàn)碼位數(shù)等于組數(shù)! 每一組內(nèi)采用一位奇偶校驗(yàn)!,校驗(yàn)碼位數(shù)的確定,假定數(shù)據(jù)位數(shù)為n,校驗(yàn)碼為k位,則故障字位數(shù)也為k位。k位故障字所能表示的狀態(tài)最多是2K,每種狀態(tài)可用來(lái)說(shuō)明一種出錯(cuò)情況。 若只有一位錯(cuò),則結(jié)果可能是: 數(shù)據(jù)中某一位錯(cuò) (n種可能) 校驗(yàn)碼中有一位錯(cuò) (k種可能) 無(wú)錯(cuò) ( 1 種可能) 假定最多有一位錯(cuò),則n和k必須滿(mǎn)足下列關(guān)系: 2K1+n+k, 即:2K-1n+k 有效數(shù)據(jù)位數(shù)和校驗(yàn)碼位數(shù)間的關(guān)系 從表中可看出,當(dāng)數(shù)據(jù)有8位時(shí),校驗(yàn)碼和故障字都應(yīng)有4位。 說(shuō)明:4
54、位故障字最多可表示16種狀態(tài),而單個(gè)位出錯(cuò)情況最多只有12種可能(8個(gè)數(shù)據(jù)位和4個(gè)校驗(yàn)位),再加上無(wú)錯(cuò)的情況,一共有13種。所以,用16種狀態(tài)表示13種情況應(yīng)是足夠了。,有效數(shù)據(jù)位數(shù)和校驗(yàn)碼位數(shù)間的關(guān)系,海明碼的分組,基本思想:數(shù)據(jù)位和校驗(yàn)位按某種方式排列為一個(gè)(n+k)位的碼字,將該字中每個(gè)出錯(cuò)位的位置與故障字的數(shù)值建立關(guān)系,通過(guò)故障字的值確定該碼字中哪一位發(fā)生了錯(cuò)誤,并將其取反來(lái)糾正。 根據(jù)上述基本思想,按以下規(guī)則來(lái)解釋各故障字的值。 規(guī)則1: 若故障字每位全部是0,則表示沒(méi)有發(fā)生錯(cuò)誤。 規(guī)則2:若故障字中有且僅有一位為1,則表示校驗(yàn)位中有一位出錯(cuò),因而不需糾正。 規(guī)則3:若故障字中多位為
55、1,則表示有一個(gè)數(shù)據(jù)位出錯(cuò),其在碼字中的出錯(cuò)位置由故障字的數(shù)值來(lái)確定。糾正時(shí)只要將出錯(cuò)位取反即可。,海明碼的分組,以8位數(shù)據(jù)進(jìn)行單個(gè)位檢錯(cuò)和糾錯(cuò)為例說(shuō)明。 假定8位數(shù)據(jù)M= M8M7M6M5M4M3M2M1,4位校驗(yàn)位P=P4P3P2P1。根據(jù)規(guī)則將M和P按一定的規(guī)律排到一個(gè)12位碼字中。 據(jù)規(guī)則1,故障字為0000時(shí),表示無(wú)錯(cuò)。 據(jù)規(guī)則2,故障字中有且僅有一位為1時(shí),表示校驗(yàn)位中有一位出錯(cuò)。此時(shí),故障字只可能是0001、0010、0100、1000,將這四種狀態(tài)分別代表校驗(yàn)位中第P1、P2、P3、P4位發(fā)生錯(cuò)誤,因此,它們分別位于碼字的第1、2、4、8位。 據(jù)規(guī)則3,將其他多位為1的故障字依
56、次表示數(shù)據(jù)位M1M8發(fā)生錯(cuò)誤的情況。因此,數(shù)據(jù)位M1M8分別位于碼字的第0011(3)、0101(5)、0110(6)、0111(7)、1001(9)、1010(10)、1011(11)、1100(12)位。即碼字的排列為: M8M7M6M5P4M4M3M2P3M1P2P1 這樣,得到故障字S=S4S3S2S1的各個(gè)狀態(tài)和出錯(cuò)情況的對(duì)應(yīng)關(guān)系表,可根據(jù)這種對(duì)應(yīng)關(guān)系對(duì)整個(gè)數(shù)據(jù)進(jìn)行分組。,海明校驗(yàn)碼分組情況,數(shù)據(jù)位或校驗(yàn)位出錯(cuò)一定會(huì)影響所在組的奇偶性。,碼字:M8M7M6M5P4M4M3M2P3M1P2P1,例:若M1出錯(cuò),則故障字為0011,因而會(huì)改變S2和S1所在分組的奇偶性。故M1同時(shí)被分到第
57、2(S2)組和第1(S1) 組。,問(wèn)題:若P1出錯(cuò),則如何?若M8出錯(cuò),則如何?,P10001,分在第1組;M81100,分在第4組和第3組,故障字S4S3S2S1每一位的值反映所在組的奇偶性,校驗(yàn)位的生成和檢錯(cuò)、糾錯(cuò),分組完成后,就可對(duì)每組采用相應(yīng)的奇(偶)校驗(yàn),以得到相應(yīng)的一個(gè)校驗(yàn)位。 假定采用偶校驗(yàn) (取校驗(yàn)位Pi,使對(duì)應(yīng)組中有偶數(shù)個(gè)1),則得到校驗(yàn)位與數(shù)據(jù)位之間存在如下關(guān)系: P1 = M1M2M4M5M7 P2 = M1M3M4M6M7 P3 = M2M3M4M8 P4 = M5M6M7M8,海明校驗(yàn)過(guò)程,根據(jù)公式求出每一組對(duì)應(yīng)的校驗(yàn)位Pi (i=1,2,3,4) 數(shù)據(jù)M和校驗(yàn)位P一
58、起被存儲(chǔ),根據(jù)讀出數(shù)據(jù)M得新校驗(yàn)位P 讀出校驗(yàn)位P與新校驗(yàn)位P 按位進(jìn)行異或操作,得故障字 S = S4S3S2S1 根據(jù)S的值確定:無(wú)錯(cuò)、僅校驗(yàn)位錯(cuò)、某個(gè)數(shù)據(jù)位錯(cuò),海明碼舉例,假定一個(gè)8位數(shù)據(jù)M為:M8M7M6M5M4M3M2M1= 01101010,根據(jù)上述公式求出相應(yīng)的校驗(yàn)位為: P1 = M1M2M4M5M7 =01101=1 P2 = M1M3M4M6M7 =00111=1 P3 = M2M3M4M8=1010=0 P4 = M5M6M7M8=0110=0 假定12位碼字 (M8M7M6M5P4M4M3M2P3M1P2P1) 讀出后為: (1) 數(shù)據(jù)位M=M=01101010,校驗(yàn)位P=P=0011 (2) 數(shù)據(jù)位M= 01111010,校驗(yàn)位P=P=0011 (3) 數(shù)據(jù)位M=M=01101010,校驗(yàn)位P= 1011 要求分別考察每種情
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年工業(yè)機(jī)器人系統(tǒng)操作員職業(yè)技能認(rèn)證模擬試卷及答案
- 2025年下半年衛(wèi)生監(jiān)督信息員培訓(xùn)測(cè)試題及答案
- 2025年幼兒園副園長(zhǎng)年度工作總結(jié)
- 2025年三級(jí)攝影(攝像)師考試題庫(kù)及完整答案
- 河道治理及生態(tài)修復(fù)工程施工方案與技術(shù)措施
- 醫(yī)療服務(wù)2026年特色發(fā)展
- 2026年銷(xiāo)售技巧提升培訓(xùn)課程
- 2026 年民政局離婚協(xié)議書(shū)正規(guī)模板含全部核心條款
- 2026 年離婚協(xié)議書(shū)合規(guī)制式模板
- 2026 年法定化離婚協(xié)議書(shū)規(guī)范模板
- 2026年殘疾人聯(lián)合會(huì)就業(yè)服務(wù)崗招聘筆試適配題含答案
- 2026年山西警官職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)筆試備考題庫(kù)帶答案解析
- 2026年農(nóng)夫山泉-AI-面試題目及答案
- 2026凱翼汽車(chē)全球校園招聘(公共基礎(chǔ)知識(shí))綜合能力測(cè)試題附答案
- 山東省威海市環(huán)翠區(qū)2024-2025學(xué)年一年級(jí)上學(xué)期1月期末數(shù)學(xué)試題
- 2025年手術(shù)室護(hù)理實(shí)踐指南知識(shí)考核試題及答案
- 外貿(mào)公司采購(gòu)專(zhuān)員績(jī)效考核表
- 彩禮分期合同范本
- 胸腺瘤伴重癥肌無(wú)力課件
- 十五五安全生產(chǎn)規(guī)劃思路
- 一年級(jí)地方課程教案
評(píng)論
0/150
提交評(píng)論