第6章計算機的運算方法_第1頁
第6章計算機的運算方法_第2頁
第6章計算機的運算方法_第3頁
第6章計算機的運算方法_第4頁
第6章計算機的運算方法_第5頁
已閱讀5頁,還剩192頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、張向東 計算機科學與技術(shù)系 6.1.1 非數(shù)值數(shù)據(jù)表示法 o字符表示法 o漢字表示法 舉例:舉例: 無符號數(shù)無符號數(shù) 沒有符號的數(shù),所有數(shù)位均用以表示數(shù)值。沒有符號的數(shù),所有數(shù)位均用以表示數(shù)值。 含義:含義: 基本常識:基本常識: 機器字長機器字長CPU中運算器的位數(shù)中運算器的位數(shù) 00000000 0 11111111 281 255 Min: Max: 8 位位 (1) 16 位位 (2) 000000 0 111111 2161 65535 Min: Max: 1、ASCII碼 o使用7bit表示128個字符 nFrom 000 0000 to 111 1111 27=128 o注意:A

2、SCII中的數(shù)字字符和數(shù)字本身不相等 o幾乎所有計算機均支持該代碼集 o但不是所有語言都能用128個字符表示 o計算機利用寄存器存儲數(shù)據(jù) o寄存器中每個位稱bit (Binary DigiT) o最高有效位 (MSB) 最低有效位 (LSB) MSB Most significant bit LSB Least significant bit 專用名詞 2、 漢字表示法 o8 bit數(shù)據(jù)僅能表示256個字符,常用漢字 6000多個,故其無法表示漢字 oGB2312國家標準采用16位表示 o與ASCII字符的區(qū)別,最高有效位MSB=1 o內(nèi)碼,外碼(輸入法),字模碼(顯示用) GB2312-80

3、國家標準 o1981年,GB2312-80國家標準,包括 6763個漢字/682個非漢字字符,稱為國標 碼或國際交換碼 oGB2312字符集的構(gòu)成: n一級常用漢字3755個,按漢語拼音排列 n二級常用漢字3008個,按偏旁部首排列 n非漢字字符682個 漢字標準 oGB2312-1980(GB0)(簡體) n6763個漢字 oGB13000-1993 n20902個漢字 (Unicode 1.1版本) o漢字擴展規(guī)范GBK1.0 標準1995(非國家標準) n21003個字符(兼容GB2312) oGB18030-2000(1/2/4字節(jié)編碼) n27484漢字 (向下兼容GB2312 GB

4、K,GB13000) 字模碼介紹 o字模碼是用點陣表示的漢字字 型代碼,是漢字的輸出形式。 o字模點陣的信息量是很大的, 所占存儲空間也很大。以8*9 為例,每個英文字要占用9個字 節(jié), o因此字模點陣只能用來構(gòu)成字 庫,而不能用于機內(nèi)存儲。 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 10H 28H 44H 82H 82H FEH 82H 82H 00H (a) “ A ”的點陣表示的點陣表示 RA3 -RA0D7D0 ASCII代碼代碼(41H) 指向這個字形指向這個字形 6.1.2 進制轉(zhuǎn)

5、換 o二進制數(shù)轉(zhuǎn)八進制 o二進制數(shù)轉(zhuǎn)十六進制 o二進制數(shù)轉(zhuǎn)十進制 o十進制數(shù)轉(zhuǎn)二進制 (一)機器數(shù)與真值(一)機器數(shù)與真值 有符號數(shù)有符號數(shù) 用一位作為符號位,其余位為數(shù)值。通常用一位作為符號位,其余位為數(shù)值。通常 0 表示正數(shù)表示正數(shù) 1 表示負數(shù)表示負數(shù) 含義:含義: 1. 真值:真正的數(shù)值,即帶真值:真正的數(shù)值,即帶“”、“”號的數(shù)。號的數(shù)。 0.1001 0.0101 1001 1100 思考:如何將這些真值連同符號位在計算機中表示呢?思考:如何將這些真值連同符號位在計算機中表示呢? 2機器數(shù):機器數(shù): 將符號數(shù)字化之后的數(shù)。(用于存儲在計算機中)將符號數(shù)字化之后的數(shù)。(用于存儲在計算

6、機中) 數(shù)值部分數(shù)值部分符號位符號位 模型:模型: (即日常數(shù)學計算中所用到的數(shù)字表示形式)(即日常數(shù)學計算中所用到的數(shù)字表示形式) 精髓:精髓: 1、二進制轉(zhuǎn)十進制 從二進制數(shù)求其十進制的值,逐位碼權(quán)累加求和 o10010001127026 025 124 023 022 021 120 -= m ki i i rDN* 例如例如: :寫出寫出(1101.01)(1101.01)2 2,(237),(237)8 8,(10D),(10D)16 16的十進制數(shù) 的十進制數(shù) l(1101.01)2=123+122+021+120+ 02-1+12-2 =8+4+1+0.25=13.25 l(23

7、7)8=282+381+780 =128+24+7=159 l(10D)16=1162+13160=256+13=269 2、二到八或十六進制轉(zhuǎn)換 o二進制轉(zhuǎn)到八進制 從小數(shù)點向左右三位一分組 (10 011 100 . 01)2 = ( 234 . 2 )8 010 o二進制轉(zhuǎn)十六進制 從小數(shù)點向左右四位一分組 (1001 1100 . 01)2 = ( 9C . 4 )16 0100 說明:整數(shù)部分不足位數(shù)對轉(zhuǎn)換無影響, 小數(shù)部分不足位數(shù)要補零湊足,則出錯。 3、十進制轉(zhuǎn)二進制 整數(shù)部分除2取余 小數(shù)部分乘2取整 2 1 1 2 2 2 5 2 1 0 1 1 0 1 0.625 * 2

8、1 0.25 * 2 00.5 * 2 1 0.0 除盡為止 1011 低 高 高 低 求得位數(shù)滿足要求為止 4、進制轉(zhuǎn)換的簡單運算方法 o17/128的二進制表示方法? o大數(shù)的轉(zhuǎn)換方法,記住幾個常用的2的冪 2532 2664 27128 28256 29512 2101024(1Kilo) 2112048 2124096 2138192 21416384 21532768 21665536 2201048576(1Mega) 2301073741824(1Giga) 2401Tera 更大的單位是多少? 2501 Peta 2601 Exa 2701 Zetta 2801 Yotta 6

9、.26.2數(shù)據(jù)的表示方法數(shù)據(jù)的表示方法 6.2.1 6.2.1 數(shù)據(jù)格式數(shù)據(jù)格式 計算機中常用的數(shù)據(jù)表示格式有兩種:計算機中常用的數(shù)據(jù)表示格式有兩種: (1 1)定點格式)定點格式 (2 2)浮點格式)浮點格式 定點格式(定點格式(小數(shù)點位小數(shù)點位 置固定置固定)容許的數(shù)值范圍)容許的數(shù)值范圍 有限,但要求的處理硬件有限,但要求的處理硬件 比較簡單比較簡單。 浮點格式(浮點格式(小數(shù)點位置浮動小數(shù)點位置浮動) 容許的數(shù)值范圍很大,但要求的處容許的數(shù)值范圍很大,但要求的處 理硬件比較復雜理硬件比較復雜 。 1. 1. 定點數(shù)的表示方法定點數(shù)的表示方法 定點表示定點表示:約定機器中所有數(shù)據(jù)的小數(shù)點

10、位置是按約按約 定固定不變定固定不變的,小數(shù)點就不再使用記號“.”來表示。 定點數(shù)據(jù)的形式:純小數(shù)純小數(shù)或純整數(shù)純整數(shù)。 (設(shè):定點數(shù)表示為(設(shè):定點數(shù)表示為0 01 12 2n n 其中:其中:0 0符號位,符號位,0 0代表正號,代表正號,1 1代表負號)代表負號) 小數(shù)點的位置約定在符號小數(shù)點的位置約定在符號 位位x x0 0的后面的后面(不顯示不顯示) 小數(shù)點的位置約定在數(shù)值小數(shù)點的位置約定在數(shù)值 位位x xn n的后面的后面(不顯示不顯示) 例:例: X=+1010110.X=+1010110. 純整數(shù):純整數(shù):X = X = 0 01010110.1010110. 正數(shù),符號位取正

11、數(shù),符號位取0 0 Y= - 1101001.Y= - 1101001.純整數(shù):純整數(shù):Y = Y = 1 11101001.1101001. 負數(shù),符號位取負數(shù),符號位取1 1 X=+0.11011X=+0.11011 Y=-0.10101Y=-0.10101 符號位取符號位取0 0 純小數(shù):純小數(shù):X =X = 0 0.11011.11011 符號位取符號位取1 1 純小數(shù):純小數(shù):X = X = 1 1.10101.10101 純整數(shù):純整數(shù):X = X = 0 010101101010110 符號位取符號位取0 0 純整數(shù):純整數(shù):Y = Y = 1 111010011101001 符

12、號位取符號位取1 1 符號位取符號位取0 0 純小數(shù):純小數(shù):X = X = 0.0.1101111011 符號位取符號位取1 1 純小數(shù):純小數(shù):X = X = 1. 1.1010110101 注意到注意到: 無論是整數(shù)或無論是整數(shù)或 是小數(shù),在是小數(shù),在 機器數(shù)的表機器數(shù)的表 示中,都不示中,都不 出現(xiàn)小數(shù)點出現(xiàn)小數(shù)點 “.”,.”,只是約只是約 定其位置。定其位置。 2 2、浮點數(shù)的表示方法、浮點數(shù)的表示方法 例:例:156.78 156.78 =15.678=15.67810101 1 = 1.56781.567810102 2 = 0.15678= 0.1567810103 3=M=

13、MR RE E 其中:其中:MM為為尾數(shù)尾數(shù);R R為為基數(shù)基數(shù);E E為為階碼階碼(指數(shù))。(指數(shù))。 二進制數(shù)二進制數(shù) 在定點計算機中,在定點計算機中,一般約定一般約定: : 尾數(shù)尾數(shù)|M|1.0|M| 1 x x 00 1- 1-x =x =1 1+ |x| + |x| 0 0 x x -1 -1 定點小數(shù) 符號位 小數(shù)點位置 數(shù)值部分 2-n |X|1-2-n 下溢/上溢 對于對于定點整數(shù)定點整數(shù) x x =1 12 2n n,則原碼的定義是,則原碼的定義是: : 對于對于定點整數(shù)定點整數(shù),其原碼形式為:,其原碼形式為: 原 原= =0 01 12 2n n, , 注意到注意到:原碼機

14、器中:原碼機器中 “ “+0”+0”、“-0” -0” 有兩種形式:有兩種形式: 對于對于定點小數(shù)定點小數(shù):+0+0原 原 =0.000 =0.0000 -00 -0原 原 = =1.0001.0000 0 對于對于定點整數(shù)定點整數(shù):+0+0原 原 =0000 =00000. -00. -0原 原 = =100010000.0. 2 2n n0 0 2 2n n2 2n n| | | 002 2n n 符號符號 數(shù)值數(shù)值 定點整數(shù) 符號位 小數(shù)點位置 數(shù)值部分 1 |X|2n-1 上溢 2.2.補碼表示法補碼表示法 補碼的概念補碼的概念(以鐘表對時為例)(以鐘表對時為例) 假設(shè)現(xiàn)在的標準時間為

15、假設(shè)現(xiàn)在的標準時間為4 4點正;點正; 而有一只表已經(jīng)而有一只表已經(jīng)7 7點了,為點了,為 了校準時間,可以采用兩種方法:一是將時針退了校準時間,可以采用兩種方法:一是將時針退 7-4=3 7-4=3 格;一格;一 是將時針向前撥是將時針向前撥12-3=912-3=9格。格。 顯然:這兩種方法都能對準到顯然:這兩種方法都能對準到4 4點,由此可以看出,減點,由此可以看出,減3 3和加和加9 9 是等價的。所以稱:當模數(shù)是等價的。所以稱:當模數(shù)Mod=12Mod=12時,時,9 9是是(-3)(-3)補碼。補碼。 用數(shù)學公式表示:用數(shù)學公式表示:-3-3+9+9(mod12mod12) “模?!?/p>

16、表示被丟掉的數(shù)值。上式在數(shù)學上稱為同余式。表示被丟掉的數(shù)值。上式在數(shù)學上稱為同余式。 設(shè)某數(shù)為設(shè)某數(shù)為x x,當,當Mod=12Mod=12時,時,x-3=x+9x-3=x+9、x+7=x-5 x+7=x-5 都是等價都是等價 的。的。 從這里可以得到一個啟示,就是從這里可以得到一個啟示,就是負數(shù)用補碼表示時,可以把減負數(shù)用補碼表示時,可以把減 法轉(zhuǎn)化為加法法轉(zhuǎn)化為加法。 補碼的定義補碼的定義: 1 1、定點小數(shù)、定點小數(shù) 例如例如+0.1011+0.1011,則,則 補 補 0.10110.1011; -0.1011-0.1011,則,則 補 補 10+10+ 10.0000-0.10111

17、0.0000-0.1011 1.01011.0101 正數(shù)的補碼就是本身正數(shù)的補碼就是本身 負數(shù)的補碼需作運算負數(shù)的補碼需作運算 x x 1 1 x x 00 2+x=2-|x| 2+x=2-|x| 0 0 x x -1 -1 (mod 2)(mod 2) 10.0000 10.0000 - 0.1011- 0.1011 1.0101 1.0101 小數(shù): X 1- 2-(n-1) X0 x補= 2+X=2-|X| 0X-1 完成下列數(shù)的真值到 補碼的轉(zhuǎn)換 X1 = + 0.1011011 X2 = - 0.1011011 X補 X 1 1 -1 0 根據(jù)補碼定義,求負數(shù)的補碼時需作一次減法運

18、算,這顯然不根據(jù)補碼定義,求負數(shù)的補碼時需作一次減法運算,這顯然不 是補碼方法的初衷。后面將介紹反碼表示法可以解決負數(shù)的求補是補碼方法的初衷。后面將介紹反碼表示法可以解決負數(shù)的求補 問題。問題。 2 2、定點整數(shù)、定點整數(shù) 例:已知例:已知x=+10111,x=+10111,y=-11011, y=-11011, 求求 xx補、補、yy補補 (n=5)(n=5) 按定義:按定義:xx補補 =0 01011110111 yy補補 =2 25+1 5+1+y= +y=10000001000000- -1101111011=1 10010100101 x x 2 2n n x x 00 2 2n+1

19、 n+1+x +x= = 2 2n+1 n+1 -|x| -|x| 0 0 x x - -2 2n n (mod(mod 2 2n+1 n+1) ) 1000000 1000000 - 11011 11011 100101 100101 注:上式注:上式機器數(shù)機器數(shù)的位數(shù)為的位數(shù)為n+1n+1 整數(shù): X 2(n-1) -1 X0 x補= 2n+X=2n-|X| 0X- 2(n-1) 完成下列數(shù)的真 值到補碼的轉(zhuǎn)換 X1 = + 01011011 X2 =- 01011011 X補 X 0 2(n-1) 2(n-1)-2(n-1) 2n 注注:0 0的補碼只有一種形式的補碼只有一種形式 對于對

20、于定點小數(shù)定點小數(shù): : 00補 補 00補 補 0.0000 0.0000 對于對于定點整數(shù)定點整數(shù): : 00補 補 00補 補 00000 . 00000 . 因此,補碼的表示范圍相對于原碼、反碼來因此,補碼的表示范圍相對于原碼、反碼來 講多一種,講多一種,定點小數(shù)定點小數(shù)可以表示可以表示-1 -1,n+1n+1位位定點整定點整 數(shù)數(shù)可以表示可以表示-2-2n n。 求補碼的快捷方式求補碼的快捷方式 0.x1x2xn 0.x1x2xn 1.x1x2xn 1.x1 x2xn 0.001 若若x 0.x1x2xn ,則,則 【x】原 原 【x】補 補 若若x 0.x1x2xn ,則,則 【x

21、】原 原 【x】補 補 0,x1x2xn 0,x1x2xn 若若x x1x2xn ,則,則 【x】原 原 【x】補 補 若若x x1x2xn ,則,則 【x】原 原 【x】補 補 1,x1x2xn 1,x1 x2xn 0.001 符號位除外,各位取反,末尾加符號位除外,各位取反,末尾加1 符號位除外,各位取反,末尾加符號位除外,各位取反,末尾加1 符號位在內(nèi),各位取反,末尾加符號位在內(nèi),各位取反,末尾加1 符號位在內(nèi),各位取反,末尾加符號位在內(nèi),各位取反,末尾加1 原碼原碼補碼補碼 【x】補 補 【x】補 補 負數(shù)負數(shù) 負數(shù)負數(shù) 3. 3. 反碼表示反碼表示法法 二進制數(shù)求反二進制數(shù)求反:就是

22、二進制的各位數(shù)碼:就是二進制的各位數(shù)碼0 0變?yōu)樽優(yōu)? 1,1 1變?yōu)樽優(yōu)? 0。 即:若即:若 x xi i =0=0,則,則 =1=1。 若若 x xi i =1=1,則,則 =0.=0. 對對定點小數(shù)定點小數(shù),反碼的定義參見書。反碼的定義參見書。 正數(shù)的反碼就是本身正數(shù)的反碼就是本身 負數(shù)的反碼則是符號負數(shù)的反碼則是符號 位為位為1 1,數(shù)值位求反。,數(shù)值位求反。 x x 1 1 x x 00 ( 2-( 2- 2 2-n -n ) ) +x= +x= ( 2-( 2- 2 2-n -n ) )_ _|x| |x| 0 0 x -1 x -1 i x i x 由上式可以得出:由上式可以得

23、出: xx反 反+|x|=1.111 +|x|=1.1111=1=10.010.00 0- -0.000.001 1 = 2- = 2- 2 2-n -n 得出:得出: 反 反 (2(22 2 n n) ) 0 0 x x -1 -1 比較反碼與補碼的公式比較反碼與補碼的公式 反 反(2(22 2 n n) ) 補 補 2 2 可得到:可得到: 補 補 反 反 2 2 n n 由此可知一個由反碼求補碼的重要公式,即:由此可知一個由反碼求補碼的重要公式,即: 一個一個負數(shù)負數(shù)的補碼,可以通過將該數(shù)的補碼,可以通過將該數(shù) 符號位置符號位置1 1,其,其 余取反,然后在最末位(余取反,然后在最末位(

24、2 2-n -n )上加 )上加1 1 的方法直接的方法直接 獲得。獲得。 反碼表示法反碼表示法 (3)規(guī)律)規(guī)律 原碼原碼反碼反碼 符號位除外,各位取反符號位除外,各位取反 符號位除外,各位取反符號位除外,各位取反 補碼補碼反碼反碼 末位減末位減1 末位加末位加1 【x】原 原 【x】補 補 【x】反 反 X真值真值X真值真值 X真值真值 負負數(shù)數(shù) 4.4.移碼表示法移碼表示法 在計算機中,移碼通常用于表示浮點在計算機中,移碼通常用于表示浮點 數(shù)的階碼。由于階碼一般取整數(shù),所以數(shù)的階碼。由于階碼一般取整數(shù),所以 移碼通常只用于移碼通常只用于整數(shù)整數(shù)的表示。的表示。 對定點整數(shù)對定點整數(shù), ,

25、移碼的定義是:移碼的定義是: 移 移 2 2n n2 2n n2 2n n (n n為移碼數(shù)值部分的位數(shù))為移碼數(shù)值部分的位數(shù)) 移碼表示法 X移= 2n-1 + X 2n-1 -1 X -2n-1 X X1 1 = 0101 0101= 0101 0101 XX1 1 補補=0101 0101=0101 0101 XX1 1 移移=1101 0101=1101 0101 X X2 2 = -0101 0101= -0101 0101 XX2 2 補補=1010 1011=1010 1011 XX2 2 移移=0010 1011=0010 1011 X移 X 0 2(n-1) 2(n-1)-2

26、(n-1) 2n 移碼在數(shù)軸上的表示 p 定點小數(shù)沒有移碼定義 p 平行移動 p 移碼為全0時表示真值最小,為-8;移碼為 全1時,表示真值最大,為+7 數(shù)值 15 7 -8 0 0 編碼 移碼的特點移碼的特點 移碼表示法移碼表示法 已知已知 X 0 ,則,則【x】移 移 【0移 移 25 0 1,000000 【0移 移 25 0 1,000000 【0】移 移 【0】移 移 當當 n = 5 時時最小的真值為最小的真值為 25 100000移 移 可見,可見,最小真值的移碼為全最小真值的移碼為全 0 = 100000 = 000000= 25100000 用移碼表示浮點數(shù)的階碼,用移碼表示

27、浮點數(shù)的階碼,能方便地判斷浮點數(shù)的階碼大小能方便地判斷浮點數(shù)的階碼大小 (6)移碼的應用移碼的應用 移碼的移碼的符號位:符號位: “0” 表示負數(shù)表示負數(shù) “1”表示正數(shù)表示正數(shù) 機器碼表示法小結(jié): 在數(shù)據(jù)的四種機器表示法中,正數(shù)的原碼、反碼、補在數(shù)據(jù)的四種機器表示法中,正數(shù)的原碼、反碼、補 碼等于真值,只有負數(shù)才分別有不同的表示方法。碼等于真值,只有負數(shù)才分別有不同的表示方法。 補碼和移碼的補碼和移碼的0 0只有一種表示方法,因此其表示范圍只有一種表示方法,因此其表示范圍 相對于原碼和反碼多一種,定點小數(shù)可表示相對于原碼和反碼多一種,定點小數(shù)可表示-1 -1(移碼(移碼 沒有小數(shù)形式),正數(shù)

28、可表示沒有小數(shù)形式),正數(shù)可表示-2-2n n。 移碼表示法主要用于表示浮點數(shù)的階碼,可以直接移碼表示法主要用于表示浮點數(shù)的階碼,可以直接 比較大小。表示范圍和補碼相同,只有最高位相反。比較大小。表示范圍和補碼相同,只有最高位相反。 48 各種編碼 +3-1-0-3111 +2-2-1-2110 +1-3-2-1101 0-4-3-0100 -1+3+3+3011 -2+2+2+2010 -3+1+1+1001 -4 0+0+0000 移碼補碼反碼原碼Binary 由于補碼表示對加減法運算十分方便,因此目前機由于補碼表示對加減法運算十分方便,因此目前機 器中廣泛采用補碼表示法。在這類機器中數(shù)用

29、補碼器中廣泛采用補碼表示法。在這類機器中數(shù)用補碼 表示,補碼存儲,補碼運算。(也有些機器,數(shù)用表示,補碼存儲,補碼運算。(也有些機器,數(shù)用 原碼進行存儲和傳送,運算時改用補碼。還有些機原碼進行存儲和傳送,運算時改用補碼。還有些機 器在做加減法時用補碼運算,在做乘除法時用原碼器在做加減法時用補碼運算,在做乘除法時用原碼 運算)運算) 原碼、反碼和補碼之間的轉(zhuǎn)換原碼、反碼和補碼之間的轉(zhuǎn)換 真值x x反 x原 x補 符號位+、-0、1 數(shù)值位不變 符號位不變 符號位不變 數(shù)值位 數(shù)值位 不變(符號位為0時) 變反(符號位為1時) 不變(符號位為0時) 變反加1(符號位為1時) 6.3 6.3 定定

30、點點 運運 算算 6.3.1 6.3.1 移位運算移位運算 1. 1. 移位的意義移位的意義 15 15 米米 = 1500 = 1500 厘米厘米 小數(shù)點右移小數(shù)點右移 2 2 位位 機器用語機器用語 15 15 相對于小數(shù)點相對于小數(shù)點 左移左移 2 2 位位 ( 小數(shù)點不動小數(shù)點不動 ) . . . 左移左移 絕對值擴大絕對值擴大 右移右移 絕對值縮小絕對值縮小 在計算機中,在計算機中,移位與加減配合,能夠?qū)崿F(xiàn)乘除運算移位與加減配合,能夠?qū)崿F(xiàn)乘除運算 2. 2. 算術(shù)移位規(guī)則算術(shù)移位規(guī)則 1 1 右移右移 添添 1 1 左移左移 添添 0 0 0 0 反反 碼碼 補補 碼碼 原原 碼碼

31、負數(shù)負數(shù) 0 0原碼、補碼、反碼原碼、補碼、反碼正數(shù)正數(shù) 添補代碼添補代碼碼碼 制制 符號位不變符號位不變 例例6.166.16 設(shè)機器數(shù)字長為設(shè)機器數(shù)字長為 8 8 位(含一位符號位),寫出位(含一位符號位),寫出 A A = +26 = +26時,三種機器數(shù)左、右移一位和兩位后的時,三種機器數(shù)左、右移一位和兩位后的 表示形式及對應的真值,并分析結(jié)果的正確性。表示形式及對應的真值,并分析結(jié)果的正確性。 解:解:A A = +26 = +26 則則 A A 原 原 = = A A 補 補 = = A A 反 反 = 0,0011010 = 0,0011010 + + 6 60,0,000000

32、11000110 +13+130,0,0 0001101001101 +104+1040,110100,110100000 + + 52520,0110100,0110100 0 +26+260,00110100,0011010移位前移位前 A A 原 原= =A A 補 補= =A A 反 反 對應的真值對應的真值 機機 器器 數(shù)數(shù) 移位操作移位操作 1 1 2 2 1 1 2 2 = +11010 = +11010 例例6.176.17 設(shè)機器數(shù)字長為設(shè)機器數(shù)字長為 8 8 位(含一位符號位),寫出位(含一位符號位),寫出 A A = = 2626時,三種機器數(shù)左、右移一位和兩位后的時,三

33、種機器數(shù)左、右移一位和兩位后的 表示形式及對應的真值,并分析結(jié)果的正確性。表示形式及對應的真值,并分析結(jié)果的正確性。 解:解:A A = = 26 26 6 61, 1,00000011000110 13 131, 1,0 0001101001101 104 1041,110101,110100000 52 521,0110101,0110100 0 26 261,00110101,0011010移位前移位前 對應的真值對應的真值機機 器器 數(shù)數(shù)移位操作移位操作 1 1 2 2 1 1 2 2 原碼原碼 = = 11010 11010 6 61, 1,11 111100111001 13 13

34、1, 1,1 1110010110010 104 1041,001011,0010111 11 52 521,1001011,1001011 1 26 261,11001011,1100101移位前移位前 對應的真值對應的真值機機 器器 數(shù)數(shù)移位操作移位操作 1 1 2 2 1 1 2 2 7 71, 1,11 111100111001 13 131, 1,1 1110011110011 104 1041,001101,001100000 52 521,1001101,1001100 0 26 261,11001101,1100110移位前移位前 對應的真值對應的真值機機 器器 數(shù)數(shù)移位操作移

35、位操作 1 1 2 2 1 1 2 2 補碼補碼 反碼反碼 3. 3. 算術(shù)移位的硬件實現(xiàn)算術(shù)移位的硬件實現(xiàn) (a a)真值為正真值為正 (b b)負數(shù)的原碼負數(shù)的原碼(c c)負數(shù)的補碼負數(shù)的補碼(d d)負數(shù)的反碼負數(shù)的反碼 0 00 00 01 1 0 00 0 丟丟 1 1 丟丟 1 1 出錯出錯 影響精度影響精度 出錯出錯 影響精度影響精度 正確正確 影響精度影響精度 正確正確 正確正確 4. 4. 算術(shù)移位和邏輯移位的區(qū)別算術(shù)移位和邏輯移位的區(qū)別 算術(shù)移位算術(shù)移位 有符號數(shù)的移位有符號數(shù)的移位 邏輯移位邏輯移位 無符號數(shù)的移位無符號數(shù)的移位 邏輯左移邏輯左移 邏輯右移邏輯右移 低位

36、添低位添 0 0,高位移丟,高位移丟 高位添高位添 0 0,低位移丟,低位移丟 例如例如 0101001101010011 邏輯左移邏輯左移 101001110100110 0 邏輯右移邏輯右移 0 010110011011001 算術(shù)左移算術(shù)左移算術(shù)右移算術(shù)右移 001001100100110 011 11011001011001(補碼)(補碼) 高位高位 1 1 移丟移丟 0 01 0 1 0 0 1 1 01 0 1 0 0 1 1 0C Cy y0 1 0 1 0 0 1 10 1 0 1 0 0 1 1 0 0 0 0 1011001010110010 6.3.26.3.2 定點補碼

37、加/減法運算 o運算方法及實現(xiàn) n補碼加減法運算公式 n溢出檢測 n補碼加減法邏輯實現(xiàn) o快速加法器 補碼加減法的實現(xiàn) oX + Y補= X補+ Y補 n兩數(shù)和的補碼等于兩數(shù)補碼之和 oX Y 補= X補+ -Y補=X補- Y補 n兩數(shù)差的補碼等于兩數(shù)補碼之差 n減法變加法,關(guān)鍵是求-Y補 o-Y補= Y補補 n對 Y補逐位取反, 再在最低位加 1 補碼加法公式證明 oX + YX + Y補 補= X = X補 補+ Y + Y補 補 1.x0 y0 (無需證明) 2.x0 y0 3.x0 (2/3證明相同) 4.x0 y0 y0 x補=x y補=2+y x補+ y補=x+2+y=2+(x+y

38、) 當x+y0時 2+(x+y)2 進位位舍去 x補+ y補=2+(x+y)=x+y (mod 2) =x+y補 (mod 2) (4) x0 y0 x+y0 x補=2+x y補=2+y x補+ y補=2+x+2+y=2+(2+x+y) mod 2 -1x+y0 故 02+x+y2 2+(2+x+y) mod 2 =(2+x+y) =x + y補 mod 2 補碼減法公式證明 X-YX-Y補 補= = X X補 補 - Y - Y補 補 ? ? X-YX-Y補 補= X = X補 補+ -Y + -Y補 補 ( (加法公式 加法公式) ) -Y-Y補 補=- Y =- Y補 補 ? ? -Y-

39、Y補 補+ Y + Y補 補= Y+(-Y) = Y+(-Y)補 補=0 =0補 補=0 =0 故故-Y-Y補 補=- Y =- Y補 補成立 成立 X-YX-Y補 補= X = X補 補+ -Y + -Y補 補= = X X補 補 - Y - Y補 補 補碼加法的幾種情況 正正得負,正溢出負負得正,負溢出 正常結(jié)果符號位進位舍去,正常結(jié)果 計算機如何識別運算結(jié)果是否溢出 單符號數(shù)溢出檢測1 o正正得負 負負得正 結(jié)果溢出 o設(shè)兩數(shù)符號位為f0 f1 o和數(shù)符號位fs s10s10 ffffffV+= 單符號數(shù)溢出檢測2 符號位進位Cf,最高位進位Cn Cf = 0,Cn = 0Cf = 1,

40、Cn = 1 Cf = 0,Cn = 1 Cf = 1,Cn = 0 單符號數(shù)溢出檢測2 溢出信號V對應的真值表 110 101 011 000 VCn Cf nfCCV= 雙符號數(shù)溢出檢測 非正常符號位,溢出 符號位進位舍去,正常結(jié)果正常結(jié)果 非正常符號位,溢出 雙符號數(shù)溢出檢測 溢出信號V對應的真值表 110 101 011 000 Vf2 f1 21ffV= 單符號補碼加/減器電路實現(xiàn) 方式控制M M0加 M=1減 C0 FAn-1 Sn-1 FAn-2FA1FA0 Cn1 Cn2C1 Sn-2S1S0 Cn Xn-1Yn-1Xn-2Yn-2X1Y1X0Y0 p 減法的避免減少了邏輯器件

41、 控制信號M如何產(chǎn)生? 符 號 位 溢出位V =1 =1=1=1=1 4. 4. 補碼加減法的硬件配置補碼加減法的硬件配置 V V0 0 A A n nG GA AG GS S 加法器(加法器(n n+1+1)溢出溢出 判斷判斷 求補控制求補控制 邏邏 輯輯 0 0 X X n n A A、X X 均均 n n+1 +1 位位 用減法標記用減法標記 G GS S 控制求補邏輯控制求補邏輯 6.3.3 6.3.3 乘法運算乘法運算 1. 1. 分析筆算乘法分析筆算乘法 A A = = 0.1101 0.1101 B B = 0.1011 = 0.1011 A AB B = = 0.1000111

42、1 0.10001111 0 . 1 1 0 10 . 1 1 0 1 0 . 1 0 1 10 . 1 0 1 1 1 1 0 11 1 0 1 1 1 0 11 1 0 1 0 0 0 00 0 0 0 1 1 0 11 1 0 1 0 . 1 0 0 0 1 1 1 10 . 1 0 0 0 1 1 1 1 符號位單獨處理符號位單獨處理 乘數(shù)的某一位決定是否加被乘數(shù)乘數(shù)的某一位決定是否加被乘數(shù) 4 4個位積一起相加個位積一起相加 乘積的位數(shù)擴大一倍乘積的位數(shù)擴大一倍 乘積的符號心算求得乘積的符號心算求得 ? 然而,人們習慣的算法對機器并不完全適用。然而,人們習慣的算法對機器并不完全適用。

43、原原 因之一因之一:機器通常只有:機器通常只有n n位長位長, ,兩個兩個n n位數(shù)相乘位數(shù)相乘, ,乘積可乘積可 能為能為2n2n位。位。原因之二原因之二:只有只有兩個兩個操作數(shù)相加的加法器操作數(shù)相加的加法器 難以勝任將難以勝任將n n個位積一次相加起來的運算。個位積一次相加起來的運算。 早期計算機中為了簡化硬件結(jié)構(gòu)早期計算機中為了簡化硬件結(jié)構(gòu), ,采用采用串行串行的的1 1位位 乘法方案乘法方案, ,即多次執(zhí)行即多次執(zhí)行“加法加法移位移位”操作來實現(xiàn)。操作來實現(xiàn)。 這這 種方法并不需要很多器件。然而串行方法畢竟太慢。種方法并不需要很多器件。然而串行方法畢竟太慢。 隨著大規(guī)模集成電路問世以來

44、隨著大規(guī)模集成電路問世以來, ,出現(xiàn)了各種形式的流出現(xiàn)了各種形式的流 水式陣列乘法器水式陣列乘法器, ,它們屬于它們屬于并行乘法器并行乘法器。 2. 2. 筆算乘法改進筆算乘法改進 A B = A 0.1011 = 0.1A + 0.00A + 0.001A +0.0001A = 0.1A + 0.00A + 0.001( A +0.1A) = 0.1A + 0.010 A + 0. 1( A +0.1A) = 0.1A +0.1 0 A+0.1(A + 0.1A) = 2-1A +2-1 0 A+2-1(A + 2-1(A+0) 第一步第一步 被乘數(shù)被乘數(shù)A A + + 0 0 第二步第二步

45、 1 1,得新的部分積,得新的部分積 第八步第八步 1 1,得結(jié)果,得結(jié)果 第三步第三步 部分積部分積 + + 被乘數(shù)被乘數(shù) 右移一位右移一位 3. 3. 改進后的筆算乘法過程(豎式)改進后的筆算乘法過程(豎式) 0 . 0 0 0 0 0 . 1 1 0 1 0 . 1 1 0 1 0 . 1 1 0 1 0 . 0 0 0 0 初態(tài),部分積初態(tài),部分積 = 0= 0 乘數(shù)為乘數(shù)為 1 1,加被乘數(shù),加被乘數(shù) 乘數(shù)為乘數(shù)為 1 1,加被乘數(shù),加被乘數(shù) 乘數(shù)為乘數(shù)為 0 0,加,加 0 0 1 . 0 0 1 11 0 . 1 0 0 11 1 1 . 0 0 0 11 1 1 0 . 1 1

46、 0 1乘數(shù)為乘數(shù)為 1 1,加,加 被乘數(shù)被乘數(shù) 0 . 1 0 0 01 1 1 1 1 1,得結(jié)果,得結(jié)果 1 0 1 1 = 0 . 0 1 1 0 1,形成新的部分積形成新的部分積 1 1 0 1 = 0 . 1 0 0 11,形成新的部分積,形成新的部分積1 1 1 0 = 0 . 0 1 0 0 1 1,形成新的部分積形成新的部分積 1 1 1 1 = 部部 分分 積積 乘乘 數(shù)數(shù) 說說 明明 小結(jié)小結(jié) 被乘數(shù)只與部分積的高位相加被乘數(shù)只與部分積的高位相加 由乘數(shù)的末位決定被乘數(shù)是否與原部分積相加,由乘數(shù)的末位決定被乘數(shù)是否與原部分積相加, 然后然后 1 1 形成新的部分積形成新

47、的部分積,同時同時 乘數(shù)乘數(shù) 1 1(末(末 位移丟),空出高位存放部分積的低位。位移丟),空出高位存放部分積的低位。 硬件硬件3 3個寄存器,具有移位功能個寄存器,具有移位功能 一個全加器一個全加器 乘法乘法 運算運算加和移位。加和移位。n n = 4 = 4,加加 4 4 次次,移移 4 4 次次 4. 4. 原碼乘法原碼乘法 (1) (1) 原碼一位乘運算規(guī)則原碼一位乘運算規(guī)則 以小數(shù)為例以小數(shù)為例 設(shè)設(shè) x x 原 原 = = x x0 0. .x x1 1x x2 2 x xn n y y 原 原 = = y y0 0. .y y1 1y y2 2 y yn n = (= (x x0

48、 0 y y0 0). ). x x* *y y* * x x y y 原 原 = ( = (x x0 0 y y0 0).(0. ).(0.x x1 1x x2 2 x xn n)(0.)(0.y y1 1y y2 2 y yn n) ) 式中式中 x x* *= 0.= 0.x x1 1x x2 2 x xn n 為為 x x 的絕對值的絕對值 y y* *= 0.= 0.y y1 1y y2 2 y yn n 為為 y y 的絕對值的絕對值 乘積的符號位單獨處理乘積的符號位單獨處理 x x0 0 y y0 0 數(shù)值部分為絕對值相乘數(shù)值部分為絕對值相乘 x x* * y y* * (2)

49、(2) 原碼一位乘遞推公式原碼一位乘遞推公式 x* y* = x*(0.y1y2 yn) = x*(y12-1+y22-2+ + yn2-n) = 2-1(y1x*+2-1(y2x*+ 2-1(ynx* + 0) ) z1 zn z0 = 0 z1 = 2-1(ynx*+z0) z2 = 2-1(yn-1x*+z1) zn = 2-1(y1x*+zn-1) z0 開始 i = 0, 0 Yn=1 + 0 + X Y右移一位 i+1i i = n X0Y0P0 結(jié)束 Y N N Y o加法次數(shù),n次 o作為加法,一定移位 o符號位單獨計算 例子 o已知X=0.1101 Y=-0.1011 o計算

50、X原Y原 00.0000 00.1101 + 00.1101 00.0110 00.1101 部分積 01.0011 1 00.1001 11 00.0000 00.1001 11 00.0100 111 00.1101 01.0001 111 00.1000 1111 乘數(shù) 1 Y0 Y0.1011 Y0.101 Y0.10 判斷位 說明 P0=0 Y4=1,+|X| 右移一位得P1 Y4=1,+ |X| 右移一位得P2 Y4=0,+0 右移一位得P3 Y4=1,+ |X| 右移一位得 P4=|X|Y| + Y0.1 + + 例題例題已知已知 x x = = 0.1110 0.1110 y

51、y = 0.1101 = 0.1101 求求 x x y y 原 原 解:解: 數(shù)值部分的運算數(shù)值部分的運算 0 . 0 0 0 0 0 . 1 1 1 0 0 . 1 1 1 0 0 . 0 0 0 0 0 . 1 1 1 0 0 . 1 1 1 0 部分積部分積 初態(tài)初態(tài) z0 = 0 部部 分分 積積 乘乘 數(shù)數(shù) 說說 明明 0 . 0 1 1 10 1 . 0 0 0 11 0 1 . 0 1 1 01 1 0 0 . 1 0 1 10 1 1 0 1,得得 z4 邏輯右移邏輯右移 邏輯右移邏輯右移 1 1 0 1 = 0 . 0 1 1 11,得得 z10 1 1 0 = 0 . 0

52、 0 1 1 1,得得 z2 1 0 1 1 = 0 . 1 0 0 0 1,得得 z3 1 1 0 1 = 數(shù)值部分按絕對值相乘數(shù)值部分按絕對值相乘 乘積的符號位乘積的符號位 x x0 0 y y0 0 = 1 0 = 1 = 1 0 = 1 x x* * y y* * = 0. 1 0 1 1 0 1 1 0 = 0. 1 0 1 1 0 1 1 0 則則 x x y y 原 原 = 1. 1 0 1 1 0 1 1 0 = 1. 1 0 1 1 0 1 1 0 特點特點絕對值運算絕對值運算 邏輯移位邏輯移位 例題例題 結(jié)果結(jié)果 用移位的次數(shù)判斷乘法是否結(jié)束用移位的次數(shù)判斷乘法是否結(jié)束 (

53、3)原碼乘法邏輯結(jié)構(gòu) R0 +1計數(shù)器 移位控制 加法器 X0 被乘數(shù)XR2 R0 部分積 計 數(shù) 器 R1 乘數(shù)Y Yn = +Yn|X| = /2 控制電路 5. 5. 補碼乘法補碼乘法 設(shè)設(shè) 被乘數(shù)被乘數(shù) 乘數(shù)乘數(shù) x x 補 補 = = x x0 0. .x x1 1x x2 2 x xn n y y 補 補 = = y y0 0. .y y1 1y y2 2 y yn n 被乘數(shù)任意,乘數(shù)為正被乘數(shù)任意,乘數(shù)為正 同原碼乘法同原碼乘法 但但 加加 和和 移位移位 按按 補碼規(guī)則補碼規(guī)則 運算運算 乘積的符號自然形成乘積的符號自然形成 被乘數(shù)任意,乘數(shù)為負被乘數(shù)任意,乘數(shù)為負 乘數(shù)乘數(shù)

54、 y y 補 補, ,去掉符號位去掉符號位,操作同,操作同 最后最后 加加 x x 補 補,校正 ,校正 (1) (1) 補碼一位乘運算規(guī)則補碼一位乘運算規(guī)則 以小數(shù)為例以小數(shù)為例 Booth Booth 算法算法(被乘數(shù)、乘數(shù)符號任意) (被乘數(shù)、乘數(shù)符號任意) 設(shè)設(shè)x補 補 = x0.x1x2 xn y補補 = y0.y1y2 yn x y補 補 = x補 補( 0.y1 yn ) x補補 y0 = x補 補(y1 2-1+y22-2+ +yn2-n) x補補 y0 = x補 補(y0+y1 2-1+y22-2+ +yn2-n) = x補 補y0+(y1 y12-1)+(y22-1y22-

55、2)+ +(yn2-(n-1)yn2-n) = x補 補(y1y0)+(y2y1)2-1+ +(ynyn-1)2-(n-1)+(0 yn)2-n) y1 2-1 + + yn 2-n x補 補= +x補補 2-1 = 20 2-1 2-2 = 2-1 2-22-12-2 = x補 補(y1y0)+(y2y1)2-1+ +(yn+1yn)2-n 附加位附加位 yn+1 Booth Booth 算法遞推公式算法遞推公式 z0補 補= 0 z1補 補= 2-1(yn+1yn)x補補+z0補補 yn+1 = 0 zn補 補= 2-1(y2y1)x補補+zn-1補補 x y補 補= zn補補+(y1y0

56、)x補補 最后一步不移位最后一步不移位 如何實現(xiàn)如何實現(xiàn) y yi i+1 +1y yi i ? ? 0 0 0 1 1 0 1 1 1 +x補 補 1 +x補 補 1 1 yi yi+1 操作操作 yi+1yi 0 1 -1 0 例例6.236.23已知已知 x = +0.0011 y = 0.1011 求求xy補 補 解:解:0 0 . 0 0 0 0 1 1 . 1 1 0 1 1 1 . 1 1 0 1 0 0 . 0 0 1 1 1 1 . 1 1 0 1 0 0 . 0 0 1 1 1 1 . 1 1 0 1 1 . 0 1 0 10 0 0 . 0 0 0 11 1 1 . 1

57、1 0 11 1 0 0 . 0 0 0 11 1 1 1 1 . 1 1 0 11 1 1 1 x補 補 = 0.0011 y補 補 = 1.0101 x補 補 = 1.1101 +x補 補 1 1 . 1 1 1 01 1 0 1 0 11 +x補 補 0 0 . 0 0 0 01 1 1 0 101 +x補 補 1 1 . 1 1 1 01 1 1 1 011 0 0 . 0 0 0 0 1 1 1 1 101 +x補 補 +x補 補 xy補 補 =1.11011111 最后一步不移位最后一步不移位 例 用補碼一位乘法計算X補 Y補 X =0.10111,Y = 0.10101 解: X

58、補=1.01001, -X補=0.10111 Y補= 0.10101 0 1 0 1 0 1 00 0 0 0 0 0 部分積R0乘數(shù)R1 判斷位YnYn+1 0 1 0 1 1 1 0 1 0 1 0 1 00 1 0 1 1 1 1 0 1 0 1 0 10 0 1 0 1 1 1 0 1 0 0 1 1 1 0 1 0 0 0 1 0 1 0 1 01 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 1 0 10 0 1 0 0 0 1 0 1 0 0 1 + + + + + + + + 1 1 0 0 0 11 0 1 0 1 0 1 1 1 0 1

59、 0 1 01 1 1 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 1 0 10 0 0 1 1 1 1 0 1 0 0 1 + + + + 1 1 0 0 0 11 0 1 0 1 0 1 1 1 0 0 0 01 1 1 0 1 0 1 部分積R0乘數(shù)R1 判斷位YnYn+1 (2) Booth (2) Booth 算法的硬件配置算法的硬件配置 A、X、Q 均均 n + 2 位位 移位和加受末兩位乘數(shù)控制移位和加受末兩位乘數(shù)控制 0 A n+1 n + 2 位加法器位加法器 控控 制制 門門 0 X n+1 0 Q n n+1 移位和加移位和加 控制邏輯控制

60、邏輯 計數(shù)器計數(shù)器 CGM 00,11 01 10 右移右移 乘法小結(jié)乘法小結(jié) 原碼乘原碼乘 符號位符號位 單獨處理單獨處理 補碼乘補碼乘 符號位符號位 自然形成自然形成 原碼乘去掉符號位運算原碼乘去掉符號位運算 即為無符號數(shù)乘法即為無符號數(shù)乘法 不同的乘法運算需有不同的硬件支持不同的乘法運算需有不同的硬件支持 整數(shù)乘法與小數(shù)乘法完全相同整數(shù)乘法與小數(shù)乘法完全相同 可用可用 逗號逗號 代替小數(shù)點代替小數(shù)點 課堂練習與思考:課堂練習與思考: 1. 一位乘是指將乘法轉(zhuǎn)化為一位乘是指將乘法轉(zhuǎn)化為“累加部分積與移位累加部分積與移位”循循 環(huán),因此環(huán),因此( ) 。 A.在原碼一位乘法中只有求和操作而無

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論