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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、張向東 計算機科學與技術系 6.1.1 非數值數據表示法 o字符表示法 o漢字表示法 舉例:舉例: 無符號數無符號數 沒有符號的數,所有數位均用以表示數值。沒有符號的數,所有數位均用以表示數值。 含義:含義: 基本常識:基本常識: 機器字長機器字長CPU中運算器的位數中運算器的位數 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中的數字字符和數字本身不相等 o幾乎所有計算機均支持該代碼集 o但不是所有語言都能用128個字符表示 o計算機利用寄存器存儲數據 o寄存器中每個位稱bit (Binary DigiT) o最高有效位 (MSB) 最低有效位 (LSB) MSB Most significant bit LSB Least significant bit 專用名詞 2、 漢字表示法 o8 bit數據僅能表示256個字符,常用漢字 6000多個,故其無法表示漢字 oGB2312國家標準采用16位表示 o與ASCII字符的區別,最高有效位MSB=1 o內碼,外碼(輸入法),字模碼(顯示用) GB2312-80

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

4、K,GB13000) 字模碼介紹 o字模碼是用點陣表示的漢字字 型代碼,是漢字的輸出形式。 o字模點陣的信息量是很大的, 所占存儲空間也很大。以8*9 為例,每個英文字要占用9個字 節, o因此字模點陣只能用來構成字 庫,而不能用于機內存儲。 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 進制轉

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

6、機中) 數值部分數值部分符號位符號位 模型:模型: (即日常數學計算中所用到的數字表示形式)(即日常數學計算中所用到的數字表示形式) 精髓:精髓: 1、二進制轉十進制 從二進制數求其十進制的值,逐位碼權累加求和 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的十進制數 的十進制數 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、二到八或十六進制轉換 o二進制轉到八進制 從小數點向左右三位一分組 (10 011 100 . 01)2 = ( 234 . 2 )8 010 o二進制轉十六進制 從小數點向左右四位一分組 (1001 1100 . 01)2 = ( 9C . 4 )16 0100 說明:整數部分不足位數對轉換無影響, 小數部分不足位數要補零湊足,則出錯。 3、十進制轉二進制 整數部分除2取余 小數部分乘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 低 高 高 低 求得位數滿足要求為止 4、進制轉換的簡單運算方法 o17/128的二進制表示方法? o大數的轉換方法,記住幾個常用的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數據的表示方法數據的表示方法 6.2.1 6.2.1 數據格式數據格式 計算機中常用的數據表示格式有兩種:計算機中常用的數據表示格式有兩種: (1 1)定點格式)定點格式 (2 2)浮點格式)浮點格式 定點格式(定點格式(小數點位小數點位 置固定置固定)容許的數值范圍)容許的數值范圍 有限,但要求的處理硬件有限,但要求的處理硬件 比較簡單比較簡單。 浮點格式(浮點格式(小數點位置浮動小數點位置浮動) 容許的數值范圍很大,但要求的處容許的數值范圍很大,但要求的處 理硬件比較復雜理硬件比較復雜 。 1. 1. 定點數的表示方法定點數的表示方法 定點表示定點表示:約定機器中所有數據的小數點

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

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

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

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

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

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

16、表示被丟掉的數值。上式在數學上稱為同余式。表示被丟掉的數值。上式在數學上稱為同余式。 設某數為設某數為x x,當,當Mod=12Mod=12時,時,x-3=x+9x-3=x+9、x+7=x-5 x+7=x-5 都是等價都是等價 的。的。 從這里可以得到一個啟示,就是從這里可以得到一個啟示,就是負數用補碼表示時,可以把減負數用補碼表示時,可以把減 法轉化為加法法轉化為加法。 補碼的定義補碼的定義: 1 1、定點小數、定點小數 例如例如+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 正數的補碼就是本身正數的補碼就是本身 負數的補碼需作運算負數的補碼需作運算 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 小數: X 1- 2-(n-1) X0 x補= 2+X=2-|X| 0X-1 完成下列數的真值到 補碼的轉換 X1 = + 0.1011011 X2 = - 0.1011011 X補 X 1 1 -1 0 根據補碼定義,求負數的補碼時需作一次減法運

18、算,這顯然不根據補碼定義,求負數的補碼時需作一次減法運算,這顯然不 是補碼方法的初衷。后面將介紹反碼表示法可以解決負數的求補是補碼方法的初衷。后面將介紹反碼表示法可以解決負數的求補 問題。問題。 2 2、定點整數、定點整數 例:已知例:已知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 注:上式注:上式機器數機器數的位數為的位數為n+1n+1 整數: X 2(n-1) -1 X0 x補= 2n+X=2n-|X| 0X- 2(n-1) 完成下列數的真 值到補碼的轉換 X1 = + 01011011 X2 =- 01011011 X補 X 0 2(n-1) 2(n-1)-2(n-1) 2n 注注:0 0的補碼只有一種形式的補碼只有一種形式 對于對

20、于定點小數定點小數: : 00補 補 00補 補 0.0000 0.0000 對于對于定點整數定點整數: : 00補 補 00補 補 00000 . 00000 . 因此,補碼的表示范圍相對于原碼、反碼來因此,補碼的表示范圍相對于原碼、反碼來 講多一種,講多一種,定點小數定點小數可以表示可以表示-1 -1,n+1n+1位位定點整定點整 數數可以表示可以表示-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 符號位在內,各位取反,末尾加符號位在內,各位取反,末尾加1 符號位在內,各位取反,末尾加符號位在內,各位取反,末尾加1 原碼原碼補碼補碼 【x】補 補 【x】補 補 負數負數 負數負數 3. 3. 反碼表示反碼表示法法 二進制數求反二進制數求反:就是

22、二進制的各位數碼:就是二進制的各位數碼0 0變為變為1 1,1 1變為變為0 0。 即:若即:若 x xi i =0=0,則,則 =1=1。 若若 x xi i =1=1,則,則 =0.=0. 對對定點小數定點小數,反碼的定義參見書。反碼的定義參見書。 正數的反碼就是本身正數的反碼就是本身 負數的反碼則是符號負數的反碼則是符號 位為位為1 1,數值位求反。,數值位求反。 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 由此可知一個由反碼求補碼的重要公式,即:由此可知一個由反碼求補碼的重要公式,即: 一個一個負數負數的補碼,可以通過將該數的補碼,可以通過將該數 符號位置符號位置1 1,其,其 余取反,然后在最末位(余取反,然后在最末位(

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

25、移碼的定義是:移碼的定義是: 移 移 2 2n n2 2n n2 2n n (n n為移碼數值部分的位數)為移碼數值部分的位數) 移碼表示法 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 移碼在數軸上的表示 p 定點小數沒有移碼定義 p 平行移動 p 移碼為全0時表示真值最小,為-8;移碼為 全1時,表示真值最大,為+7 數值 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 用移碼表示浮點數的階碼,用移碼表示

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

28、可表示沒有小數形式),正數可表示-2-2n n。 移碼表示法主要用于表示浮點數的階碼,可以直接移碼表示法主要用于表示浮點數的階碼,可以直接 比較大小。表示范圍和補碼相同,只有最高位相反。比較大小。表示范圍和補碼相同,只有最高位相反。 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 由于補碼表示對加減法運算十分方便,因此目前機由于補碼表示對加減法運算十分方便,因此目前機 器中廣泛采用補碼表示法。在這類機器中數用

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

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

31、負數負數 0 0原碼、補碼、反碼原碼、補碼、反碼正數正數 添補代碼添補代碼碼碼 制制 符號位不變符號位不變 例例6.166.16 設機器數字長為設機器數字長為 8 8 位(含一位符號位),寫出位(含一位符號位),寫出 A A = +26 = +26時,三種機器數左、右移一位和兩位后的時,三種機器數左、右移一位和兩位后的 表示形式及對應的真值,并分析結果的正確性。表示形式及對應的真值,并分析結果的正確性。 解:解: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 反 反 對應的真值對應的真值 機機 器器 數數 移位操作移位操作 1 1 2 2 1 1 2 2 = +11010 = +11010 例例6.176.17 設機器數字長為設機器數字長為 8 8 位(含一位符號位),寫出位(含一位符號位),寫出 A A = = 2626時,三種機器數左、右移一位和兩位后的時,三

33、種機器數左、右移一位和兩位后的 表示形式及對應的真值,并分析結果的正確性。表示形式及對應的真值,并分析結果的正確性。 解:解: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移位前移位前 對應的真值對應的真值機機 器器 數數移位操作移位操作 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移位前移位前 對應的真值對應的真值機機 器器 數數移位操作移位操作 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移位前移位前 對應的真值對應的真值機機 器器 數數移位操作移

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

36、添低位添 0 0,高位移丟,高位移丟 高位添高位添 0 0,低位移丟,低位移丟 例如例如 0101001101010011 邏輯左移邏輯左移 101001110100110 0 邏輯右移邏輯右移 0 010110011011001 算術左移算術左移算術右移算術右移 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運算方法及實現 n補碼加減法運算公式 n溢出檢測 n補碼加減法邏輯實現 o快速加法器 補碼加減法的實現 oX + Y補= X補+ Y補 n兩數和的補碼等于兩數補碼之和 oX Y 補= X補+ -Y補=X補- Y補 n兩數差的補碼等于兩數補碼之差 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補 補 補碼加法的幾種情況 正正得負,正溢出負負得正,負溢出 正常結果符號位進位舍去,正常結果 計算機如何識別運算結果是否溢出 單符號數溢出檢測1 o正正得負 負負得正 結果溢出 o設兩數符號位為f0 f1 o和數符號位fs s10s10 ffffffV+= 單符號數溢出檢測2 符號位進位Cf,最高位進位Cn Cf = 0,Cn = 0Cf = 1,

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

41、 控制信號M如何產生? 符 號 位 溢出位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 符號位單獨處理符號位單獨處理 乘數的某一位決定是否加被乘數乘數的某一位決定是否加被乘數 4 4個位積一起相加個位積一起相加 乘積的位數擴大一倍乘積的位數擴大一倍 乘積的符號心算求得乘積的符號心算求得 ? 然而,人們習慣的算法對機器并不完全適用。然而,人們習慣的算法對機器并不完全適用。

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

44、隨著大規模集成電路問世以來, ,出現了各種形式的流出現了各種形式的流 水式陣列乘法器水式陣列乘法器, ,它們屬于它們屬于并行乘法器并行乘法器。 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) 第一步第一步 被乘數被乘數A A + + 0 0 第二步第二步

45、 1 1,得新的部分積,得新的部分積 第八步第八步 1 1,得結果,得結果 第三步第三步 部分積部分積 + + 被乘數被乘數 右移一位右移一位 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 初態,部分積初態,部分積 = 0= 0 乘數為乘數為 1 1,加被乘數,加被乘數 乘數為乘數為 1 1,加被乘數,加被乘數 乘數為乘數為 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乘數為乘數為 1 1,加,加 被乘數被乘數 0 . 1 0 0 01 1 1 1 1 1,得結果,得結果 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 = 部部 分分 積積 乘乘 數數 說說 明明 小結小結 被乘數只與部分積的高位相加被乘數只與部分積的高位相加 由乘數的末位決定被乘數是否與原部分積相加,由乘數的末位決定被乘數是否與原部分積相加, 然后然后 1 1 形成新的部分積形成新

47、的部分積,同時同時 乘數乘數 1 1(末(末 位移丟),空出高位存放部分積的低位。位移丟),空出高位存放部分積的低位。 硬件硬件3 3個寄存器,具有移位功能個寄存器,具有移位功能 一個全加器一個全加器 乘法乘法 運算運算加和移位。加和移位。n n = 4 = 4,加加 4 4 次次,移移 4 4 次次 4. 4. 原碼乘法原碼乘法 (1) (1) 原碼一位乘運算規則原碼一位乘運算規則 以小數為例以小數為例 設設 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 數值部分為絕對值相乘數值部分為絕對值相乘 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 結束 Y N N Y o加法次數,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 乘數 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 原 原 解:解: 數值部分的運算數值部分的運算 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 部分積部分積 初態初態 z0 = 0 部部 分分 積積 乘乘 數數 說說 明明 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 = 數值部分按絕對值相乘數值部分按絕對值相乘 乘積的符號位乘積的符號位 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 特點特點絕對值運算絕對值運算 邏輯移位邏輯移位 例題例題 結果結果 用移位的次數判斷乘法是否結束用移位的次數判斷乘法是否結束 (

53、3)原碼乘法邏輯結構 R0 +1計數器 移位控制 加法器 X0 被乘數XR2 R0 部分積 計 數 器 R1 乘數Y Yn = +Yn|X| = /2 控制電路 5. 5. 補碼乘法補碼乘法 設設 被乘數被乘數 乘數乘數 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 被乘數任意,乘數為正被乘數任意,乘數為正 同原碼乘法同原碼乘法 但但 加加 和和 移位移位 按按 補碼規則補碼規則 運算運算 乘積的符號自然形成乘積的符號自然形成 被乘數任意,乘數為負被乘數任意,乘數為負 乘數乘數

54、 y y 補 補, ,去掉符號位去掉符號位,操作同,操作同 最后最后 加加 x x 補 補,校正 ,校正 (1) (1) 補碼一位乘運算規則補碼一位乘運算規則 以小數為例以小數為例 Booth Booth 算法算法(被乘數、乘數符號任意) (被乘數、乘數符號任意) 設設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補補 最后一步不移位最后一步不移位 如何實現如何實現 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乘數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乘數R1 判斷位YnYn+1 (2) Booth (2) Booth 算法的硬件配置算法的硬件配置 A、X、Q 均均 n + 2 位位 移位和加受末兩位乘數控制移位和加受末兩位乘數控制 0 A n+1 n + 2 位加法器位加法器 控控 制制 門門 0 X n+1 0 Q n n+1 移位和加移位和加 控制邏輯控制

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論