



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第二章第二章 數(shù)據(jù)的機器級表示與處理數(shù)據(jù)的機器級表示與處理數(shù)值數(shù)據(jù)的表示非數(shù)值數(shù)據(jù)的表示數(shù)據(jù)的存儲數(shù)據(jù)的運算數(shù)據(jù)的表示和運算數(shù)據(jù)的表示和運算主要教學目標主要教學目標 掌握計算機內(nèi)部各種數(shù)據(jù)的編碼表示及其運算方法 了解高級語言程序中的各種類型變量對應(yīng)的表示形式 在高級語言程序中的變量、機器數(shù)和底層硬件(寄存器、加法器、ALU等)之間建立關(guān)聯(lián) 綜合運用所學知識,分析高級語言和機器級語言程序設(shè)計中遇到的各種與數(shù)據(jù)表示和運算相關(guān)的問題,解釋相應(yīng)的執(zhí)行結(jié)果C語言參考網(wǎng)站:http:/ 第一講:數(shù)值數(shù)據(jù)的表示 定點數(shù)的編碼表示、整數(shù)的表示、無符號整數(shù)、帶符號整數(shù)、浮點數(shù)的表示 C語言程序的整數(shù)類型和浮點數(shù)
2、類型 第二講:非數(shù)值數(shù)據(jù)的表示、數(shù)據(jù)的存儲 邏輯值、西文字符、漢字字符 數(shù)據(jù)寬度單位、大端/小端、對齊存放 第三講:數(shù)據(jù)的運算 按位運算邏輯運算移位運算 位擴展和位截斷運算 無符號和帶符號整數(shù)的加減運算 無符號和帶符號整數(shù)的乘除運算 變量與常數(shù)之間的乘除運算 浮點數(shù)的加減乘除運算圍繞C語言中的運算,解釋其在底層機器級的實現(xiàn)從C程序的表達式出發(fā),用機器數(shù)在電路中的執(zhí)行來解釋表達式的執(zhí)行結(jié)果課程內(nèi)容概要課程內(nèi)容概要/*-sum.c-*/int sum(int a , unsigned len)int i,sum = 0;for (i = 0; i = len1; i+) sum += ai;ret
3、urn sum;/*-main.c-*/int main()int a1=100;int sum; sum=sum(a,0); printf(“%d”,sum);數(shù)據(jù)的表示數(shù)據(jù)的運算如果程序處理的是圖像、視頻、聲音、文字等數(shù)據(jù),那么,(1)如何獲得這些數(shù)據(jù)?(2)如何表示這些數(shù)據(jù)?(3)如何處理這些數(shù)據(jù)?“轉(zhuǎn)換轉(zhuǎn)換”的概念在數(shù)據(jù)表示中的反映的概念在數(shù)據(jù)表示中的反映具體實現(xiàn)抽象概括感覺媒體信息樹、鏈表等結(jié)構(gòu)化數(shù)據(jù)描述int, float, array, struct等類型指令指定寄存器或內(nèi)存中數(shù)據(jù)ALU中運算或總線上傳輸?shù)臄?shù)據(jù)邏輯門位信息問題(應(yīng)用) 算法程序(語言)指令集體系結(jié)構(gòu)(ISA)微體
4、系結(jié)構(gòu)電路器件(晶體管)各類數(shù)據(jù)之間的轉(zhuǎn)換關(guān)系對連續(xù)信息采樣,以使信息離散化對離散樣本用0和1進行編碼定點運算指令浮點運算指令邏輯、位操作或字符處理指令數(shù)值數(shù)據(jù)的表示數(shù)值數(shù)據(jù)的表示 數(shù)值數(shù)據(jù)表示的三要素進位記數(shù)制定、浮點表示如何用二進制編碼即:要確定一個數(shù)值數(shù)據(jù)的值必須先確定這三個要素。例如,機器數(shù) 01011001的值是多少? 進位記數(shù)制十進制、二進制、十六進制、八進制數(shù)及其相互轉(zhuǎn)換 定/浮點表示(解決小數(shù)點問題)定點整數(shù)、定點小數(shù)浮點數(shù)(可用一個定點小數(shù)和一個定點整數(shù)來表示) 定點數(shù)的編碼(解決正負號問題)原碼、補碼、反碼、移碼 (反碼很少用)答案是:不知道!答案是:不知道! Sign a
5、nd Magnitude (原碼的表示)(原碼的表示)BinaryDecimal0123456700000001001000110100010101100111u 容易理解容易理解, , 但是:但是: 0 0 的表示不唯一,故不利于程序員編程的表示不唯一,故不利于程序員編程 加、減運算方式不統(tǒng)一加、減運算方式不統(tǒng)一 需額外對符號位進行處理,故不利于硬件設(shè)計需額外對符號位進行處理,故不利于硬件設(shè)計 特別當特別當 ab ab時,實現(xiàn)時,實現(xiàn) a-b a-b比較困難比較困難從從 5050年代開始,整數(shù)都采用補碼來表示年代開始,整數(shù)都采用補碼來表示但浮點數(shù)的尾數(shù)用原碼定點小數(shù)表示但浮點數(shù)的尾數(shù)用原碼定
6、點小數(shù)表示BinaryDecimal-0-1-2-3-4-5-6-710001001101010111100110111101111補碼補碼 - - 模運算(模運算(modularmodular運算)運算)時鐘是一種模時鐘是一種模12系統(tǒng)系統(tǒng) 假定鐘表時針指向假定鐘表時針指向10點,要將它撥向點,要將它撥向6點,點, 則有兩種撥法:則有兩種撥法: 倒撥倒撥4格:格:10- 4 = 6 順撥順撥8格:格:10+8 = 18 6 (mod 12) 模模12系統(tǒng)中:系統(tǒng)中: 10- 4 10+8 (mod 12) - 4 8 (mod 12) 則,稱則,稱8是是- 4對模對模12的補碼的補碼 (即:
7、(即:- 4的模的模12補碼等于補碼等于8)。)。 同樣有同樣有 -3 9 (mod 12) -5 7 (mod 12)等等結(jié)論結(jié)論2 2: 對于某一確定的模,某數(shù)減去小于模的另一數(shù),總可對于某一確定的模,某數(shù)減去小于模的另一數(shù),總可以用該數(shù)加上另一數(shù)負數(shù)的補碼來代替。以用該數(shù)加上另一數(shù)負數(shù)的補碼來代替。補碼(補碼(modular運算):運算):+ 和和 的統(tǒng)一的統(tǒng)一 重要概念:重要概念:在一個模運算系統(tǒng)中,一個數(shù)與它除以在一個模運算系統(tǒng)中,一個數(shù)與它除以“模?!焙蟮挠鄶?shù)等價。后的余數(shù)等價。結(jié)論結(jié)論1 1: 一個負數(shù)的補碼等于模減該負數(shù)的絕對值。一個負數(shù)的補碼等于模減該負數(shù)的絕對值?,F(xiàn)實世界中
8、的模運算系統(tǒng)補碼的表示補碼的表示現(xiàn)實世界的模運算系統(tǒng)舉例例例1:“鐘表鐘表”模運算系統(tǒng)模運算系統(tǒng) 假定時針只能順撥,從假定時針只能順撥,從10點倒撥點倒撥4格后是幾點?格后是幾點?10- 4 = 10+(12- 4) = 10+8 = 6 (mod 12)例例2:“4位十進制數(shù)位十進制數(shù)” 模運算系統(tǒng)模運算系統(tǒng) 假定算盤只有四檔,且只能做加法,則在算盤上計算假定算盤只有四檔,且只能做加法,則在算盤上計算 9828-1928等于多少?等于多少?9828-1928=9828+(104-1928) =9828+8072 = 1 7900 =7900(mod 104)取模即只留余數(shù),高位取模即只留余數(shù)
9、,高位“1”1”被丟棄!被丟棄!相當于只有低相當于只有低4 4位留在算盤上。位留在算盤上。計算機中的運算器是模運算系統(tǒng)計算機中的運算器是模運算系統(tǒng) 8位二進制加法器模運算系統(tǒng)位二進制加法器模運算系統(tǒng) 計算計算0111 1111 - 0100 0000 = ? 0111 1111 - 0100 0000 = 0111 1111 + (28- 0100 0000) =0111 1111 + 1100 0000 = 1 0011 1111 (mod 28) = 0011 1111只留余數(shù),只留余數(shù),“1”1”被丟棄被丟棄結(jié)論結(jié)論1 1: 一個負數(shù)的補碼等于對應(yīng)正數(shù)補碼的一個負數(shù)的補碼等于對應(yīng)正數(shù)補碼
10、的“各位取各位取反、末位加反、末位加1 1”運算器適合用補碼表示和運算運算器適合用補碼表示和運算0000000110000010010011101111011101011010101111001101001101101001運算器只有有限位,假設(shè)為運算器只有有限位,假設(shè)為n位,則運算結(jié)果只能保留低位,則運算結(jié)果只能保留低n位,位,故可看成是個只有故可看成是個只有n檔的二進制算盤,因此,其模為檔的二進制算盤,因此,其模為2n 。當當n=4時,共有時,共有16個個機器數(shù)機器數(shù):0000 1111,可看成是模為,可看成是模為24 的鐘表系統(tǒng)。的鐘表系統(tǒng)。真值真值的范圍為的范圍為 -8 +7補碼的定義
11、補碼的定義 假定補碼有假定補碼有n位,則:位,則:X補補= 2n + X (- -2nX 2n ,mod 2n)X是真值,x補是機器數(shù)真值和機器數(shù)的含義是什么?求特殊數(shù)的補碼求特殊數(shù)的補碼 -1補補= 2n - 001 = 111(n個個1) (mod 2n)假定機器數(shù)有假定機器數(shù)有n位位 -2n-1補補= 2n - 2n-1 = 100(n-1個個0) (mod 2n) +0補補= -0補補= 000(n個個0) 32位機器中,int、short、char型數(shù)據(jù)的機器數(shù)各占幾位?補碼與真值之間的簡便轉(zhuǎn)換補碼與真值之間的簡便轉(zhuǎn)換例例: 設(shè)機器數(shù)有設(shè)機器數(shù)有8位,求位,求123和和-123的補碼
12、表示。的補碼表示。解解: 123 = 127 4 = 01111111B 100B = 01111011B 123= 01111011B 01111011補補= 28 + 01111011 = 100000000 + 01111011 = 01111011 (mod 28),即,即 7BH。 01111011補補= 28 01111011 = 10000 0000 01111011 = 1111 1111 0111 1011 +1 = 1000 0100 +1 = 1000 0101,即,即 85H。如何快速得到如何快速得到123的二進制表示?的二進制表示?各位取反,末位加各位取反,末位加1當
13、機器數(shù)為16位時,結(jié)果怎樣? Unsigned integer(無符號整數(shù)無符號整數(shù))機器中字的位排列順序有兩種方式:(例:機器中字的位排列順序有兩種方式:(例:32位字位字: 0010112) 高到低位從左到右:高到低位從左到右:0000 0000 0000 0000 0000 0000 0000 1011 高到低位從右到左:高到低位從右到左:1101 0000 0000 0000 0000 0000 0000 0000 Leftmost和和rightmost這兩個詞有歧義,故用這兩個詞有歧義,故用LSB(Least Significant Bit)來表示最低有效位,用來表示最低有效位,用M
14、SB來表示最高有效位來表示最高有效位 高位到低位多采用從左往右排列高位到低位多采用從左往右排列一般在全部是正數(shù)運算且不出現(xiàn)負值結(jié)果的場合下,可使用無符一般在全部是正數(shù)運算且不出現(xiàn)負值結(jié)果的場合下,可使用無符號數(shù)表示。例如,地址運算,編號表示,等等號數(shù)表示。例如,地址運算,編號表示,等等無符號整數(shù)的編碼中無符號整數(shù)的編碼中沒有符號位沒有符號位能表示的最大值大于位數(shù)相同的帶符號整數(shù)的最大值(能表示的最大值大于位數(shù)相同的帶符號整數(shù)的最大值(Why?)?) 例如,例如,8位無符號整數(shù)最大是位無符號整數(shù)最大是255(1111 1111) 而而8位帶符號整數(shù)最大為位帶符號整數(shù)最大為127(0111 111
15、1)總是整數(shù),所以很多時候就總是整數(shù),所以很多時候就簡稱為簡稱為“無符號數(shù)無符號數(shù)”MSB LSBSigned integer(帶符號整數(shù),定點整數(shù))(帶符號整數(shù),定點整數(shù)) 計算機必須能處理正數(shù)計算機必須能處理正數(shù)(positive) 和負數(shù)和負數(shù)(negative),MSB表表示數(shù)符示數(shù)符 有三種定點編碼方式有三種定點編碼方式 Signed magnitude (原碼)原碼) 現(xiàn)用來表示浮點(實)數(shù)的尾數(shù)現(xiàn)用來表示浮點(實)數(shù)的尾數(shù) Ones complement (反碼)反碼) 現(xiàn)已不用于表示數(shù)值數(shù)據(jù)現(xiàn)已不用于表示數(shù)值數(shù)據(jù) Twos complement (補碼)補碼) 50年代以來,所
16、有計算機都用補碼來表示定點整數(shù)年代以來,所有計算機都用補碼來表示定點整數(shù) 為什么用補碼表示帶符號整數(shù)?為什么用補碼表示帶符號整數(shù)? 補碼運算系統(tǒng)是模運算系統(tǒng),加、減運算統(tǒng)一補碼運算系統(tǒng)是模運算系統(tǒng),加、減運算統(tǒng)一 數(shù)數(shù)0的表示唯一,方便使用的表示唯一,方便使用 比原碼和反碼多表示一個最小負數(shù)比原碼和反碼多表示一個最小負數(shù)C語言程序中的整數(shù)語言程序中的整數(shù)關(guān)系表達式關(guān)系表達式運算類型運算類型結(jié)果結(jié)果說明說明0 = 0U-1 0-1 -2147483647-12147483647U -2147483647-12147483647 (int) 2147483648U-1 -2(unsigned) -
17、1 -2無符號數(shù):無符號數(shù):unsigned int ( short / long);帶符號整數(shù):;帶符號整數(shù): int ( short / long)常在一個數(shù)的后面加一個常在一個數(shù)的后面加一個“u u”或或“U U”表示無符號數(shù)表示無符號數(shù)若同時有無符號和帶符號整數(shù),則若同時有無符號和帶符號整數(shù),則C編譯器將帶符號整數(shù)強制轉(zhuǎn)換為無符號數(shù)編譯器將帶符號整數(shù)強制轉(zhuǎn)換為無符號數(shù)假定以下關(guān)系表達式在假定以下關(guān)系表達式在3232位用補碼表示的機器上執(zhí)行,結(jié)果是什么?位用補碼表示的機器上執(zhí)行,結(jié)果是什么?C語言程序中的整數(shù)語言程序中的整數(shù)關(guān)系關(guān)系表達式表達式類類型型結(jié)結(jié)果果說明說明0 = = 0U-1
18、 0-1 -2147483647 - 12147483647U -2147483647 - 12147483647 (int) 2147483648U-1 -2(unsigned) -1 -2無無帶帶無無帶帶無無帶帶帶帶無無11 0*1 0* 1*11000B = 000B111B (-1) 000B(0)0111B (231-1) 1000B (-231)0111B (231-1) 1000B (-231)111B (-1) 1110B (-2)111B (232-1) 1110B (232-2)帶帶* *的結(jié)果與常規(guī)預想的相反!的結(jié)果與常規(guī)預想的相反!C語言程序中的整數(shù)語言程序中的整數(shù)例如
19、,考慮以下C代碼:1 int x = 1;2 unsigned u = 2147483648;34 printf ( “x = %u = %dn”, x, x);5 printf ( “u = %u = %dn”, u, u);在32位機器上運行上述代碼時,它的輸出結(jié)果是什么?為什么?x = 4294967295 = 1u = 2147483648 = 2147483648u 因為1的補碼整數(shù)表示為“111”,作為32位無符號數(shù)解釋時,其值為2321= 4 294 967 2961 = 4 294 967 295。u 231的無符號數(shù)表示為“1000”,被解釋為32位帶符號整數(shù)時,其值為最小負
20、數(shù):232-1 = 231 = 2 147 483 648。C語言程序中的整數(shù)語言程序中的整數(shù)1)在有些32位系統(tǒng)上,C表達式-2147483648 2147483647的執(zhí)行結(jié)果為false。Why?2)若定義變量“int i=-2147483648;”,則“i 2147483647”的執(zhí)行結(jié)果為true。Why?3)如果將表達式寫成“-2147483647-1 2147483647”,則結(jié)果會怎樣呢?Why?1)在)在ISO C90標準下標準下 ,2147483648為unsigned int型,因此 “-2147483648 2147483647”按無符號數(shù)比較, 100B比011大,結(jié)
21、果為false。 在在ISO C99標準下標準下 ,2147483648為long long型,因此 “-2147483648 2147483647”按帶符號整數(shù)比較, 100B比011小,結(jié)果為true。2)i 2147483647 按int型數(shù)比較,結(jié)果為true。3)-2147483647-1 negativeExponent: 0111 1101two = 125ten Bias adjustment: 125 - 127 = -2Significand: 1 + 1x2-1+ 1x2-2 + 0 x2-3 + 0 x2-4 + 0 x2-5 +. =1+2-1 +2-2 = 1+0.
22、5 +0.25 = 1.75Represents: -1.75tenx2-2 = - 0.4375(-1)S x (1 + Significand) x 2(Exponent-127)BEE00000H is the hex. Rep. Of an IEEE 754 SP FP number關(guān)于浮點數(shù)精度的一個例子關(guān)于浮點數(shù)精度的一個例子 61.419998和61.420002是兩個可表示數(shù),兩者之間相差0.000004。當輸入數(shù)據(jù)是一個不可表示數(shù)時,機器將其轉(zhuǎn)換為最鄰近的可表示數(shù)。第一講小結(jié)第一講小結(jié)在機器內(nèi)部編碼后的數(shù)稱為機器數(shù),其值稱為真值在機器內(nèi)部編碼后的數(shù)稱為機器數(shù),其值稱為真值定義
23、數(shù)值數(shù)據(jù)有三個要素:進制、定點定義數(shù)值數(shù)據(jù)有三個要素:進制、定點/浮點、編碼浮點、編碼整數(shù)的表示整數(shù)的表示 無符號數(shù):無符號數(shù):正整數(shù),用來表示地址等正整數(shù),用來表示地址等;帶符號整數(shù):;帶符號整數(shù):用補碼表示用補碼表示C語言中的整數(shù)語言中的整數(shù) 無符號數(shù):無符號數(shù):unsigned int ( short / long);帶符號數(shù):;帶符號數(shù): int ( short / long)浮點數(shù)的表示浮點數(shù)的表示 符號符號;尾數(shù)尾數(shù):定點小數(shù);:定點小數(shù);指數(shù)(階):指數(shù)(階):定點整數(shù)(基不用表示)定點整數(shù)(基不用表示)浮點數(shù)的范圍浮點數(shù)的范圍 正上溢、正下溢、負上溢、負下溢;與階碼的位數(shù)和基的
24、大小有關(guān)正上溢、正下溢、負上溢、負下溢;與階碼的位數(shù)和基的大小有關(guān)浮點數(shù)的精度:浮點數(shù)的精度:與尾數(shù)的位數(shù)和是否規(guī)格化有關(guān)與尾數(shù)的位數(shù)和是否規(guī)格化有關(guān)浮點數(shù)的表示(浮點數(shù)的表示(IEEE 754標準):標準):單精度單精度SP(float)和雙精度)和雙精度DP(double) 規(guī)格化數(shù)規(guī)格化數(shù)(SP):階碼:階碼1254,尾數(shù)最高位隱含為,尾數(shù)最高位隱含為1 “零零” (階為全階為全0,尾為全,尾為全0) (階為全階為全1,尾為全,尾為全0) NaN (階為全階為全1,尾為非,尾為非0) 非規(guī)非規(guī)格化格化數(shù)數(shù) (階為全階為全0,尾為非,尾為非0,隱藏位為,隱藏位為0)十進制數(shù)的表示:十進制數(shù)
25、的表示:用用ASCII碼或碼或BCD碼表示碼表示1010在計算機中在計算機中有幾種可能的有幾種可能的表示?表示? -10呢?呢?數(shù)據(jù)的表示和運算數(shù)據(jù)的表示和運算 分以下三個部分介紹 第一講:數(shù)值數(shù)據(jù)的表示 定點數(shù)的編碼表示 整數(shù)的表示 無符號整數(shù)、帶符號整數(shù) 浮點數(shù)的表示 C語言程序的整數(shù)類型和浮點數(shù)類型 第二講:非數(shù)值數(shù)據(jù)的表示、數(shù)據(jù)的存儲 邏輯值、西文字符、漢字字符 數(shù)據(jù)寬度單位 大端/小端、對齊存放 表示表示用一位表示用一位表示 。例如,真:。例如,真:1 / 假:假:0N位二進制數(shù)可表示位二進制數(shù)可表示N個邏輯數(shù)據(jù),或一個位串個邏輯數(shù)據(jù),或一個位串 運算運算按位進行按位進行如如:按位與
26、按位與 / 按位或按位或 / 邏輯左移邏輯左移 / 邏輯右移邏輯右移 等等 識別識別邏輯數(shù)據(jù)和數(shù)值數(shù)據(jù)在形式上并無差別,也是一串邏輯數(shù)據(jù)和數(shù)值數(shù)據(jù)在形式上并無差別,也是一串0/1序序列,機器靠指令來識別。列,機器靠指令來識別。 位串位串用來表示若干個狀態(tài)位或控制位(用來表示若干個狀態(tài)位或控制位(OS中使用較多)中使用較多) 例如,例如,x86的標志寄存器含義如下:的標志寄存器含義如下: 邏輯數(shù)據(jù)的編碼表示邏輯數(shù)據(jù)的編碼表示CFPFAFZFSFTFIFDFOF 特點特點是一種拼音文字,用有限幾個字母可拼寫出所有單詞是一種拼音文字,用有限幾個字母可拼寫出所有單詞只對有限個字母和數(shù)學符號、標點符號等
27、輔助字符編碼只對有限個字母和數(shù)學符號、標點符號等輔助字符編碼所有字符總數(shù)不超過所有字符總數(shù)不超過256個,使用個,使用7或或8個二進位可表示個二進位可表示 表示(表示(常用編碼為常用編碼為7位位ASCII碼)碼)十進制數(shù)字:十進制數(shù)字:0/1/2/9英文字母:英文字母:A/B/Z/a/b/z專用符號:專用符號:+/-/%/*/&/ 控制字符(不可打印或顯示)控制字符(不可打印或顯示) 操作操作字符串操作,如字符串操作,如:傳送傳送/比較等比較等 西文字符的編碼表示西文字符的編碼表示必須熟悉對應(yīng)必須熟悉對應(yīng)的的ASCII碼!碼! 特點特點漢字是表意文字,一個字就是一個方塊圖形。漢字是表意
28、文字,一個字就是一個方塊圖形。漢字數(shù)量巨大,總數(shù)超過漢字數(shù)量巨大,總數(shù)超過6萬字,給漢字在計算機內(nèi)部的表示、漢萬字,給漢字在計算機內(nèi)部的表示、漢字的傳輸與交換、漢字的輸入和輸出等帶來了一系列問題。字的傳輸與交換、漢字的輸入和輸出等帶來了一系列問題。 編碼形式編碼形式有以下幾種漢字代碼:有以下幾種漢字代碼: 輸入碼:輸入碼:對漢字用相應(yīng)按鍵進行編碼表示,用于輸入對漢字用相應(yīng)按鍵進行編碼表示,用于輸入 內(nèi)碼:內(nèi)碼:用于在系統(tǒng)中進行存儲、查找、傳送等處理用于在系統(tǒng)中進行存儲、查找、傳送等處理 字模點陣或輪廓描述字模點陣或輪廓描述: 描述漢字字模點陣或輪廓,用于顯示描述漢字字模點陣或輪廓,用于顯示/打
29、印打印 漢字及國際字符的編碼表示漢字及國際字符的編碼表示問題:西文字符有沒有輸入碼?有沒有內(nèi)碼?問題:西文字符有沒有輸入碼?有沒有內(nèi)碼?有沒有字模點陣或輪廓描述?有沒有字模點陣或輪廓描述?漢字漢字內(nèi)碼內(nèi)碼 至少需至少需2個字節(jié)才能表示一個漢字內(nèi)碼。為什么?個字節(jié)才能表示一個漢字內(nèi)碼。為什么?由漢字的總數(shù)決定!由漢字的總數(shù)決定! 可在可在GB2312國標碼的基礎(chǔ)上產(chǎn)生漢字內(nèi)碼國標碼的基礎(chǔ)上產(chǎn)生漢字內(nèi)碼為與為與ASCII碼區(qū)別,將國標碼的兩個字節(jié)的第一位置碼區(qū)別,將國標碼的兩個字節(jié)的第一位置“1”后后得到得到一種一種漢字內(nèi)碼漢字內(nèi)碼例如,例如,漢字漢字“大大”在碼表中位于第在碼表中位于第20行、第
30、行、第83列。因此區(qū)位列。因此區(qū)位碼為碼為0010100 1010011,國標碼為,國標碼為00110100 01110011,即,即3473H。前面的。前面的34H和字符和字符“4”的的ACSII碼相同,后面的碼相同,后面的73H和字符和字符“s”的的ACSII碼相同,將每個字節(jié)的最高位各設(shè)為碼相同,將每個字節(jié)的最高位各設(shè)為“1”后,就得到其內(nèi)碼:后,就得到其內(nèi)碼:B4F3H (1011 0100 1111 0011B),因而不會和,因而不會和ASCII碼混淆。碼混淆。為便于打印、顯示漢字,漢字字形必須預先存在機內(nèi)為便于打印、顯示漢字,漢字字形必須預先存在機內(nèi)字庫字庫 (font):所有漢字
31、形狀的描述信息集合:所有漢字形狀的描述信息集合不同字體不同字體 (如宋體、仿宋、楷體、黑體等如宋體、仿宋、楷體、黑體等) 對應(yīng)不同字庫對應(yīng)不同字庫從字庫中找到字形描述信息,然后送設(shè)備輸出從字庫中找到字形描述信息,然后送設(shè)備輸出問題:如何知道到哪里找相應(yīng)的字形信息?問題:如何知道到哪里找相應(yīng)的字形信息?漢字內(nèi)碼與其在字庫中的位置有關(guān)!漢字內(nèi)碼與其在字庫中的位置有關(guān)!字形主要有兩種描述方法:字形主要有兩種描述方法:字模點陣描述(圖像方式)字模點陣描述(圖像方式)輪廓描述(圖形方式)輪廓描述(圖形方式)直線向量輪廓直線向量輪廓曲線輪廓(曲線輪廓(True Type字形)字形)漢字的字模點陣碼和輪廓描
32、述漢字的字模點陣碼和輪廓描述數(shù)據(jù)的基本寬度數(shù)據(jù)的基本寬度 比特(比特(bit)是計算機中處理、存儲、傳輸信息的最小單位)是計算機中處理、存儲、傳輸信息的最小單位 二進制信息的計量單位是二進制信息的計量單位是“字節(jié)字節(jié)”(Byte),也稱也稱“位組位組”現(xiàn)代計算機中,存儲器現(xiàn)代計算機中,存儲器按字節(jié)編址按字節(jié)編址字節(jié)是最小可尋址單位字節(jié)是最小可尋址單位 (addressable unit ) 如果以字節(jié)為一個排列單位,則如果以字節(jié)為一個排列單位,則LSB表示最低有效字節(jié),表示最低有效字節(jié),MSB表示最高有效字節(jié)表示最高有效字節(jié) 除比特和字節(jié)外,還經(jīng)常使用除比特和字節(jié)外,還經(jīng)常使用“字字”(wor
33、d)作為單位作為單位 “字字”和和 “字長字長”的概念不同的概念不同 IA-32中的中的“字字”有多少位?字長多少位呢?有多少位?字長多少位呢?DWORD :32位位QWORD:64位位16位位32位位數(shù)據(jù)的基本寬度數(shù)據(jù)的基本寬度 “字字”和和 “字長字長”的概念不同的概念不同 “字長字長”指數(shù)據(jù)通路的寬度。指數(shù)據(jù)通路的寬度。(數(shù)據(jù)通路指(數(shù)據(jù)通路指CPU內(nèi)部數(shù)據(jù)流經(jīng)的路徑以及路徑上的部件,內(nèi)部數(shù)據(jù)流經(jīng)的路徑以及路徑上的部件,主要是主要是CPU內(nèi)部進行數(shù)據(jù)運算、存儲和傳送的部件,這些內(nèi)部進行數(shù)據(jù)運算、存儲和傳送的部件,這些部件的寬度基本上要一致,才能相互匹配。因此,部件的寬度基本上要一致,才能
34、相互匹配。因此,”字字長長”等于等于CPU內(nèi)部總線的寬度、運算器的位數(shù)、通用寄存器的內(nèi)部總線的寬度、運算器的位數(shù)、通用寄存器的寬度等寬度等。 )“字字”表示被處理信息的單位,用來度量數(shù)據(jù)類型的寬度。表示被處理信息的單位,用來度量數(shù)據(jù)類型的寬度。字和字長的寬度可以一樣,也可不同。字和字長的寬度可以一樣,也可不同。 例如,例如,x86體系結(jié)構(gòu)定義體系結(jié)構(gòu)定義“字字”的寬度為的寬度為16位,但從位,但從386開開始字長就是始字長就是32位了。位了。數(shù)據(jù)量的度量單位數(shù)據(jù)量的度量單位 存儲二進制信息時的度量單位要比字節(jié)或字大得多存儲二進制信息時的度量單位要比字節(jié)或字大得多 容量經(jīng)常使用的單位有:容量經(jīng)常
35、使用的單位有: “千字節(jié)千字節(jié)”(KB),1KB=210字節(jié)字節(jié)=1024B “兆字節(jié)兆字節(jié)”(MB),1MB=220字節(jié)字節(jié)=1024KB “千兆字節(jié)千兆字節(jié)”(GB),1GB=230字節(jié)字節(jié)=1024MB “兆兆字節(jié)兆兆字節(jié)”(TB),1TB=240字節(jié)字節(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 “兆兆比特
36、兆兆比特/秒秒”(Tb/s),1Tbps=1012 b/s =1000 Gbps如果把如果把b換成換成B,則表示字節(jié)而不是比特(位),則表示字節(jié)而不是比特(位)例如,例如,10MBps表示表示 10兆字節(jié)兆字節(jié)/秒秒程序中數(shù)據(jù)類型的寬度程序中數(shù)據(jù)類型的寬度 高級語言支持多種類型、多種高級語言支持多種類型、多種長度的數(shù)據(jù)長度的數(shù)據(jù)例如,例如,C語言中語言中char類型的寬類型的寬度為度為1個字節(jié),可表示一個字個字節(jié),可表示一個字符(非數(shù)值數(shù)據(jù)),也可表示符(非數(shù)值數(shù)據(jù)),也可表示一個一個8位的整數(shù)(數(shù)值數(shù)據(jù))位的整數(shù)(數(shù)值數(shù)據(jù))不同機器上表示的同一種類型不同機器上表示的同一種類型的數(shù)據(jù)可能寬度不
37、同的數(shù)據(jù)可能寬度不同 必須確定相應(yīng)的機器級數(shù)據(jù)表必須確定相應(yīng)的機器級數(shù)據(jù)表示方式和相應(yīng)的處理指令示方式和相應(yīng)的處理指令 C聲明聲明典型典型32位位機器機器Compaq Alpha機器機器charshort intintlong int12441248char*48floatdouble4848C語言中數(shù)值數(shù)據(jù)類型的寬度語言中數(shù)值數(shù)據(jù)類型的寬度 (單位:字節(jié)單位:字節(jié))從表中看出:同類型數(shù)據(jù)并不是從表中看出:同類型數(shù)據(jù)并不是所有機器都采用相同的寬度,分所有機器都采用相同的寬度,分配的字節(jié)數(shù)配的字節(jié)數(shù)隨機器字長和編譯器隨機器字長和編譯器的不同而不同。的不同而不同。 Compaq Alpha是一個針
38、對高端是一個針對高端應(yīng)用的應(yīng)用的64位機器,即字長為位機器,即字長為64位位 數(shù)據(jù)的存儲和排列順序數(shù)據(jù)的存儲和排列順序 80年代開始,幾乎所有機器都用年代開始,幾乎所有機器都用字節(jié)編址字節(jié)編址 ISA設(shè)計時要考慮的兩個問題:設(shè)計時要考慮的兩個問題:如何根據(jù)一個字節(jié)地址取到一個如何根據(jù)一個字節(jié)地址取到一個32位的字?位的字?- 字的存放問題字的存放問題一個字能否存放在任何字節(jié)邊界?一個字能否存放在任何字節(jié)邊界?- 字的邊界對齊問題字的邊界對齊問題若 int i = -65535,存放在100號單元(占100103),則用“取數(shù)”指令訪問100號單元取出 i 時,必須清楚 i 的4個字節(jié)是如何存放
39、的。msblsb103 102 101 100little endian word 100#100 101 102 103big endian word 100#Word: FF FF 00 01大端方式(Big Endian): MSB所在的地址是數(shù)的地址 e.g. IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA小端方式( Little Endian): LSB所在的地址是數(shù)的地址 e.g. Intel 80 x86, DEC VAX 有些機器兩種方式都支持,可通過特定控制位來設(shè)定采用哪種方式。65535=216-1-65535補=FFFF0001
40、HBIG Endian versus Little Endian Ex3: Memory layout of a instruction located in 1000假定小端機器中指令:假定小端機器中指令:mov AX, 0 x12345(BX)其中操作碼其中操作碼mov為為40H,寄存器,寄存器AX和和BX的編號分別為的編號分別為0001B和和0010B,立即數(shù)占,立即數(shù)占32位,則存放順序為:位,則存放順序為: 若在大端機器上,則存放順序如何?若在大端機器上,則存放順序如何?401200 01 23 45401245 23 01 00000123451240452301001240100
41、510041003100210011000地址地址只需要考慮指令中立即數(shù)的順序!只需要考慮指令中立即數(shù)的順序!即指令地址為1000Byte Swap Problem(字節(jié)交換問題)(字節(jié)交換問題)785634120123increasingbyteaddressBig Endian123456780123Little Endianu 每個系統(tǒng)內(nèi)部是一致的,但在系統(tǒng)間通信時可能會發(fā)生問題!每個系統(tǒng)內(nèi)部是一致的,但在系統(tǒng)間通信時可能會發(fā)生問題!u 因為順序不同,需要進行順序轉(zhuǎn)換因為順序不同,需要進行順序轉(zhuǎn)換音、視頻和圖像等文件格式或處理程序都涉及到字節(jié)順序問題音、視頻和圖像等文件格式或處理程序都涉
42、及到字節(jié)順序問題 ex. Little endian: GIF, PC Paintbrush, Microsoft RTF,etc Big endian: Adobe Photoshop, JPEG, MacPaint, etc 上述存放在上述存放在0 0號單元的數(shù)據(jù)(字)是什么?號單元的數(shù)據(jù)(字)是什么?12345678H? 78563412H?存放方式不同的機器間程序移植或數(shù)據(jù)通信時,會發(fā)生什么問題?存放方式不同的機器間程序移植或數(shù)據(jù)通信時,會發(fā)生什么問題? 00040812160 字節(jié) 1字節(jié) 2字節(jié) 3字節(jié)0004081216字節(jié)0 字節(jié)1 字節(jié)2 字節(jié)3Alignment(對齊對齊)
43、 如:如:int i, short k, double x, char c, short j, 則:則:&i=0; &k=4; &x=8; &c=16; &j=18; 則:則: &i=0; &k=4; &x=6; &c=14; &j=15;x:3個周期個周期j:2個周期個周期x:2個周期個周期j:1個周期個周期雖節(jié)省了空間,雖節(jié)省了空間,但增加了訪存次但增加了訪存次數(shù)!數(shù)!需要權(quán)衡,目前需要權(quán)衡,目前來看,浪費一點來看,浪費一點存儲空間沒有關(guān)存儲空間沒有關(guān)系!系! 存儲器按字節(jié)存儲器按字節(jié)編址編址每次只能讀寫每次只
44、能讀寫某個字地址開某個字地址開始的始的4個單元中個單元中連續(xù)的連續(xù)的1個、個、2個、個、3個或個或4個個字節(jié)字節(jié)Alignment(對齊對齊) 舉例舉例例如,考慮下列兩個結(jié)構(gòu)聲明:例如,考慮下列兩個結(jié)構(gòu)聲明:struct S1 int i;charc;intj;struct S2 int i;intj;charc;在要求對齊的情況下,哪種結(jié)構(gòu)聲明更好?在要求對齊的情況下,哪種結(jié)構(gòu)聲明更好?S1:icX X Xj048S2:icj048需要12個字節(jié)只需要9個字節(jié)對于對于“struct S2 d4”,只分配,只分配9個字節(jié)能否滿足對齊要求?個字節(jié)能否滿足對齊要求?S2:icX X Xj048不能
45、!也需要12個字節(jié)S2比S1好第二講小結(jié)第二講小結(jié) 非數(shù)值數(shù)據(jù)的表示 邏輯數(shù)據(jù)用來表示真/假或N位位串,按位運算 西文字符:用ASCII碼表示 漢字:漢字輸入碼、漢字內(nèi)碼、漢字字模碼 數(shù)據(jù)的寬度 位、字節(jié)、字(不一定等于字長) k /K / M / G / T / P / E / Z / Y 有不同的含義 數(shù)據(jù)的存儲排列 數(shù)據(jù)的地址:連續(xù)若干單元中最小的地址,即:從小地址開始存放數(shù)據(jù) 問題:若一個short型數(shù)據(jù)si存放在單元0 x08000100和0 x08000101中,那么si的地址是什么? 大端方式:用MSB存放的地址表示數(shù)據(jù)的地址 小端方式:用LSB存放的地址表示數(shù)據(jù)的地址 按邊界對
46、齊可減少訪存次數(shù)數(shù)據(jù)的表示和運算數(shù)據(jù)的表示和運算 分以下三個部分介紹(續(xù)) 第三講:數(shù)據(jù)的運算 按位運算和邏輯運算 移位運算 位擴展和位截斷運算 無符號和帶符號整數(shù)的加減運算 無符號和帶符號整數(shù)的乘除運算 變量與常數(shù)之間的乘除運算 浮點數(shù)的加減乘除運算 從高級語言程序中的表達式出發(fā),用機器數(shù)在具體電路中的執(zhí)行過程,來解釋表達式的執(zhí)行結(jié)果圍繞C語言中的運算,解釋其在底層機器級的實現(xiàn)方法數(shù)據(jù)的運算數(shù)據(jù)的運算高級語言程序中涉及的運算(以高級語言程序中涉及的運算(以C語言為例)語言為例) 整數(shù)算術(shù)運算、浮點數(shù)算術(shù)運算整數(shù)算術(shù)運算、浮點數(shù)算術(shù)運算 按位、邏輯、移位、位擴展和位截斷按位、邏輯、移位、位擴展
47、和位截斷指令集中涉及到的運算指令集中涉及到的運算 涉及到的定點數(shù)運算涉及到的定點數(shù)運算 算術(shù)運算算術(shù)運算 帶符號整數(shù)運算:帶符號整數(shù)運算:取負取負 / 符號擴展符號擴展 / 加加 / 減減 / 乘乘 / 除除 / 算術(shù)移位算術(shù)移位 無符號整數(shù)運算:無符號整數(shù)運算:0擴展擴展 / 加加 / 減減 / 乘乘 / 除除 邏輯運算邏輯運算 邏輯操作:邏輯操作:與與 / 或或 / 非非 / 移位操作:移位操作:邏輯左移邏輯左移 / 邏輯右移邏輯右移 涉及到的浮點數(shù)運算:加、減、乘、除涉及到的浮點數(shù)運算:加、減、乘、除基本運算部件基本運算部件ALU的設(shè)計的設(shè)計C語言程序中涉及的運算語言程序中涉及的運算 算
48、術(shù)運算(最基本的運算)算術(shù)運算(最基本的運算)無符號數(shù)、帶符號整數(shù)、浮點數(shù)的無符號數(shù)、帶符號整數(shù)、浮點數(shù)的+、-、*、/ 運算等運算等 按位運算按位運算用途用途對對位串位串實現(xiàn)實現(xiàn)“掩碼掩碼”(mask)操作或相應(yīng)的其他處理)操作或相應(yīng)的其他處理(主要用于對(主要用于對多媒體數(shù)據(jù)或狀態(tài)多媒體數(shù)據(jù)或狀態(tài)/控制信息控制信息進行處理)進行處理)操作操作按位或:按位或:“|” 按位與:按位與:“&”按位取反:按位取反:“”按位異或:按位異或:“”問題:如何從問題:如何從16位采樣數(shù)據(jù)位采樣數(shù)據(jù)y中提取高位字節(jié),并使低字節(jié)為中提取高位字節(jié),并使低字節(jié)為0?可用可用“&”實現(xiàn)實現(xiàn)“掩碼掩碼
49、”操作:操作:y & 0 xFF00例如,當例如,當y=0 x2C0B時,得到結(jié)果為:時,得到結(jié)果為:0 x2C00C語言程序中涉及的運算語言程序中涉及的運算 邏輯運算邏輯運算用途用途用于關(guān)系表達式的運算用于關(guān)系表達式的運算例如,例如,if (xy and iy) & (i100) then “!”表示表示“NOT”運算運算 與按位運算的差別與按位運算的差別符號表示不同:符號表示不同:& & ;| ; 運算過程不同:運算過程不同:按位按位 整體整體結(jié)果類型不同:結(jié)果類型不同:位串位串 邏輯值邏輯值C語言程序中涉及的運算語言程序中涉及的運算 移位運算移位運算用途用
50、途提取部分信息提取部分信息擴大或縮小數(shù)值的擴大或縮小數(shù)值的2、4、8倍倍操作操作左移左移::xk不區(qū)分是邏輯移位還是算術(shù)移位,由不區(qū)分是邏輯移位還是算術(shù)移位,由x的類型確定的類型確定無符號數(shù):邏輯左移、邏輯右移無符號數(shù):邏輯左移、邏輯右移高(低)位移出,低(高)位補高(低)位移出,低(高)位補0,可能溢出!,可能溢出!問題:何時可能發(fā)生溢出?如何判斷溢出?問題:何時可能發(fā)生溢出?如何判斷溢出? 若高位移出的是若高位移出的是1,則左移時發(fā)生溢出,則左移時發(fā)生溢出帶符號整數(shù):算術(shù)左移、算術(shù)右移帶符號整數(shù):算術(shù)左移、算術(shù)右移左移:高位移出,低位補左移:高位移出,低位補0??赡芤绯?!??赡芤绯?! 溢出
51、判斷:溢出判斷:若移出的位不等于新的符號位,則溢出。若移出的位不等于新的符號位,則溢出。右移:低位移出,高位補符,可能發(fā)生有效數(shù)據(jù)丟失。右移:低位移出,高位補符,可能發(fā)生有效數(shù)據(jù)丟失。如何從如何從1616位數(shù)據(jù)位數(shù)據(jù)y y中提取高位字節(jié)?中提取高位字節(jié)?某字長為某字長為8 8的機器中,的機器中,x x、y y和和z z都是都是8 8位帶符號位帶符號整數(shù),已知整數(shù),已知x=-81x=-81,則,則y=x/2=y=x/2=?z=2x=z=2x=?(y8) 送送8位寄存器位寄存器移位!移位!y= 40? z= 162?C語言程序中涉及的運算語言程序中涉及的運算 位擴展和位截斷運算位擴展和位截斷運算用
52、途用途類型轉(zhuǎn)換時可能需要數(shù)據(jù)擴展或截斷類型轉(zhuǎn)換時可能需要數(shù)據(jù)擴展或截斷操作操作沒有專門操作運算符,根據(jù)類型轉(zhuǎn)換前沒有專門操作運算符,根據(jù)類型轉(zhuǎn)換前后數(shù)據(jù)長短確定是擴展還是截斷后數(shù)據(jù)長短確定是擴展還是截斷擴展:短轉(zhuǎn)長擴展:短轉(zhuǎn)長 無符號數(shù):無符號數(shù):0擴展,前面補擴展,前面補0 帶符號整數(shù):符號擴展,前面補符帶符號整數(shù):符號擴展,前面補符截斷:長轉(zhuǎn)短截斷:長轉(zhuǎn)短 強行將高位丟棄,故可能發(fā)生強行將高位丟棄,故可能發(fā)生“溢出溢出”例例1(擴展操作):在大端機上輸出(擴展操作):在大端機上輸出si, usi, i, ui的十進制和十六進制值是什么?的十進制和十六進制值是什么?short si = -3
53、2768;unsigned short usi = si;int i = si;unsingned ui = usi ;si = -32768 80 00usi = 32768 80 00i = -32768 FF FF 80 00 ui = 32768 00 00 80 00例例2(截斷操作):(截斷操作):i和和j是否相等?是否相等?int i = 32768;short si = (short) i;int j = si;不相等!不相等!i = 32768 00 00 80 00si = -32768 80 00 j = -32768 FF FF 80 00原因:對原因:對i i截斷時發(fā)
54、生截斷時發(fā)生了了“溢出溢出”,即:,即:32768截斷為截斷為16位數(shù)時位數(shù)時,因其超出,因其超出16位能表位能表示的最大值,故無法示的最大值,故無法截斷為正確的截斷為正確的16位數(shù)位數(shù)!如何實現(xiàn)高級語言源程序中的運算?如何實現(xiàn)高級語言源程序中的運算? 總結(jié):總結(jié):C語言程序中的基本數(shù)據(jù)類型及其基本運算類型語言程序中的基本數(shù)據(jù)類型及其基本運算類型 基本數(shù)據(jù)類型基本數(shù)據(jù)類型無符號數(shù)、帶符號整數(shù)、浮點數(shù)、位串、字符(串)無符號數(shù)、帶符號整數(shù)、浮點數(shù)、位串、字符(串) 基本運算類型基本運算類型算術(shù)、按位、邏輯、移位、擴展和截斷、匹配算術(shù)、按位、邏輯、移位、擴展和截斷、匹配 計算機如何實現(xiàn)高級語言程序
55、中的運算?計算機如何實現(xiàn)高級語言程序中的運算? 將各類表達式編譯(轉(zhuǎn)換)為指令序列將各類表達式編譯(轉(zhuǎn)換)為指令序列 計算機直接執(zhí)行指令來完成運算計算機直接執(zhí)行指令來完成運算例:例:C語言賦值語句語言賦值語句“f = (g+h) (i+j);”中變量中變量i、j、f、g、h由編譯器分別由編譯器分別分配給分配給MIPS寄存器寄存器$t0$t4。寄存器。寄存器$t0$t7的編號對應(yīng)的編號對應(yīng)815,上述程序段對,上述程序段對應(yīng)的應(yīng)的MIPS機器代碼和匯編表示(機器代碼和匯編表示(#后為注釋)如下:后為注釋)如下:000000 01011 01100 01101 00000 100000 add $
56、t5, $t3, $t4 # g+h000000 01000 01001 01110 00000 100000 add $t6, $t0, $t1 # i+j000000 01101 01110 01010 00000 100010 sub $t2, $t5, $t6 # f =(g+h)(i+j) 需要提供哪些運算類指令才能支持高級語言需求呢?需要提供哪些運算類指令才能支持高級語言需求呢?邏輯運算、移位、擴展和截斷等指令實現(xiàn)較容易,算術(shù)運算指令難!n位整數(shù)加位整數(shù)加/減運算器減運算器先看一個C程序段: int x=9, y=-6, z1, z2; z1=x+y; z2=x-y; 問題:上述程
57、序段中,x和y的機器數(shù)是什么?z1和z2的機器數(shù)是 什么?回答:x的機器數(shù)為x補, y的機器數(shù)為y補 ; z1的機器數(shù)為x+y補 ; z2的機器數(shù)為x-y補 。因此,計算機中需要有一個電路,能夠?qū)崿F(xiàn)以下功能:已知 x補 和 y補 ,計算x+y補 和 x-y補 。根據(jù)補碼定義,有如下公式:x+y補 =2n+x+y= 2n+x+2n+y= x補+y補 (mod 2n )x-y補=2n+x-y= 2n+x+2n-y= x補+-y補 (mod 2n )補碼的定義 假定補碼有n位,則:X補=2n +X (-2nX2n ,mod 2n)y補=y補+1n位整數(shù)加位整數(shù)加/減運算器減運算器利用帶標志加法器,可
58、構(gòu)造整數(shù)加/減運算器,進行以下運算:無符號整數(shù)加、無符號整數(shù)減帶符號整數(shù)加、帶符號整數(shù)減當Sub為1時,做減法當Sub為0時,做加法 補碼加減運算公式A+B補 = A補 + B 補 ( mod 2n )AB補 = A補 + B 補 ( mod 2n ) 實現(xiàn)減法的主要工作在于:求B 補問題:如何求B補?B補=B補+1在整數(shù)加/減運算部件基礎(chǔ)上,加上寄存器、移位器以及控制邏輯,就可實現(xiàn)ALU、乘/除運算以及浮點運算電路Sum加法器444AZFCinCout4B401MUXSubBOF整數(shù)加/減運算部件SFCFB算術(shù)邏輯部件(算術(shù)邏輯部件(ALU) 進行基本算術(shù)運算與邏輯運算 無符號整數(shù)加、減 帶
59、符號整數(shù)加、減 與、或、非、異或等邏輯運算 核心電路是整數(shù)加/減運算部件輸出除和/差等,還有標志信息有一個操作控制端(ALUop),用來決定ALU所執(zhí)行的處理功能。ALUop的位數(shù)k決定了操作的種類,例如,當位數(shù)k為3時,ALU最多只有23=8種操作。ALUop Result ALUop Result ALUop Result ALUop Result 0 0 0 A加B 0 1 0 A與B 1 0 0 A取反 1 1 0 A 0 0 1 A減B 0 1 1 A或B 1 0 1 A B 1 1 1 未用回顧:認識計算機中最基本的部件回顧:認識計算機中最基本的部件CPU:中央處理器;PC:程序計
60、數(shù)器;MAR:存儲器地址寄存器ALU:算術(shù)邏輯部件;IR:指令寄存器;MDR:存儲器數(shù)據(jù)寄存器GPRs:通用寄存器組(由若干通用寄存器組成) 控制器CPU PC輸入設(shè)備輸出設(shè)備 MAR MDRALU標志寄存器 IR地址數(shù)據(jù)控制GPRs0123存儲器01234567整數(shù)加、減運算整數(shù)加、減運算 C語言程序中的整數(shù)有 帶符號整數(shù),如char、short、int、long型等 無符號整數(shù),如unsigned char、unsigned short、unsigned等 指針、地址等通常被說明為無符號整數(shù),因而在進行指針或地址運算時,需要進行無符號整數(shù)的加、減運算 無符號整數(shù)和帶符號整數(shù)的加、減運算電路完全一樣,這個運算電路稱為整數(shù)加減運算部件,基于帶標志加法器實現(xiàn) 最基本的加法器,因為只有n位,所以是一種模2n運算系統(tǒng)!例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 預防意外懷孕健康教育
- 胃穿孔術(shù)后護理小講課
- 為什么學互換性87課件
- 人民的課件教學課件
- 新型茶飲品牌2025年擴張路徑與消費者洞察研究報告
- 2025年工業(yè)互聯(lián)網(wǎng)平臺融合異構(gòu)數(shù)據(jù)庫:關(guān)鍵技術(shù)與應(yīng)用場景剖析報告
- 新能源微電網(wǎng)穩(wěn)定性控制與新能源發(fā)電系統(tǒng)經(jīng)濟效益分析報告
- 產(chǎn)業(yè)鏈協(xié)同效應(yīng):2025年農(nóng)產(chǎn)品深加工產(chǎn)業(yè)園區(qū)與農(nóng)業(yè)合作社合作模式
- 車工工藝與技能訓練(第二版)課件:工件的定位
- 輸血護理操作流程圖解
- 2025屆江蘇省蘇州市八校高三下學期三模聯(lián)考物理試卷(含解析)
- 分子氧氧化丙烯制環(huán)氧丙烷銅基催化劑的制備及性能研究
- 2024-2025學年青島版(五四學制)小學數(shù)學二年級下冊(全冊)知識點復習要點歸納
- 人教版五下-6.1 同分母分數(shù)加減法(教學課件)
- 2025年入團考試必考題目試題及答案
- 商標基礎(chǔ)知識試題及答案
- 中小學人工智能通識教育指南(2025年版)
- 在線網(wǎng)課學習課堂《人工智能(北理 )》單元測試考核答案
- 6.8相遇問題(課件) 數(shù)學四年級下冊(共15張PPT)人教版
- 車庫頂板行車及堆載方案范本
- 麗水中學宿舍樓設(shè)計計算書某六層高校宿舍樓框架結(jié)構(gòu)設(shè)計全套圖紙及計算書全套資料
評論
0/150
提交評論