第六章_計(jì)算機(jī)的運(yùn)算方法_第1頁
第六章_計(jì)算機(jī)的運(yùn)算方法_第2頁
第六章_計(jì)算機(jī)的運(yùn)算方法_第3頁
第六章_計(jì)算機(jī)的運(yùn)算方法_第4頁
第六章_計(jì)算機(jī)的運(yùn)算方法_第5頁
已閱讀5頁,還剩140頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、大連理工大學(xué) 軟件學(xué)院 賴曉晨計(jì)算機(jī)組成原理計(jì)算機(jī)組成原理計(jì)算機(jī)與信息工程學(xué)院宋麗麗大連理工大學(xué) 軟件學(xué)院 賴曉晨p 無符號數(shù)和有符號數(shù)無符號數(shù)和有符號數(shù)p 數(shù)的定點(diǎn)表示和浮點(diǎn)表示數(shù)的定點(diǎn)表示和浮點(diǎn)表示p 定點(diǎn)運(yùn)算定點(diǎn)運(yùn)算p 浮點(diǎn)四則運(yùn)算浮點(diǎn)四則運(yùn)算p 算術(shù)邏輯單元算術(shù)邏輯單元第六章第六章 計(jì)算機(jī)的運(yùn)算方法計(jì)算機(jī)的運(yùn)算方法大連理工大學(xué) 軟件學(xué)院 賴曉晨6.1 無符號數(shù)和有符號數(shù)無符號數(shù)和有符號數(shù)p 計(jì)算機(jī)中的數(shù)均存放在計(jì)算機(jī)中的數(shù)均存放在寄存器寄存器中,寄存器中,寄存器的位數(shù)即機(jī)器字長。的位數(shù)即機(jī)器字長。p 計(jì)算機(jī)中參與運(yùn)算的有兩類數(shù):計(jì)算機(jī)中參與運(yùn)算的有兩類數(shù): 無符號數(shù) 有符號數(shù) 大連理工

2、大學(xué) 軟件學(xué)院 賴曉晨一、無符號數(shù)一、無符號數(shù) 無符號數(shù):沒有符號的數(shù),寄存器的每一無符號數(shù):沒有符號的數(shù),寄存器的每一位存放的都是數(shù)值。位存放的都是數(shù)值。8 位位 0 25516 位位 0 65535大連理工大學(xué) 軟件學(xué)院 賴曉晨二、有符號數(shù)二、有符號數(shù)有符號數(shù)有符號數(shù):數(shù)字的極性也用二進(jìn)制數(shù)表示,:數(shù)字的極性也用二進(jìn)制數(shù)表示,0代表正數(shù),代表正數(shù),1代表負(fù)數(shù),即符號位也被數(shù)字代表負(fù)數(shù),即符號位也被數(shù)字化了,符號位放在數(shù)字的前端?;?,符號位放在數(shù)字的前端。 這種把符號這種把符號“數(shù)字化數(shù)字化”的數(shù),叫做的數(shù),叫做機(jī)器數(shù)機(jī)器數(shù),而數(shù)字原本的(帶有正負(fù)號的)值稱為而數(shù)字原本的(帶有正負(fù)號的)值

3、稱為真值真值。大連理工大學(xué) 軟件學(xué)院 賴曉晨1、機(jī)器數(shù)和真值、機(jī)器數(shù)和真值帶符號的數(shù)帶符號的數(shù) 符號數(shù)字化的數(shù)符號數(shù)字化的數(shù)+ 0.10110 1011小數(shù)點(diǎn)的位置小數(shù)點(diǎn)的位置+ 11000 1100小數(shù)點(diǎn)的位置小數(shù)點(diǎn)的位置 11001 1100小數(shù)點(diǎn)的位置小數(shù)點(diǎn)的位置 0.10111 1011小數(shù)點(diǎn)的位置小數(shù)點(diǎn)的位置真值真值 機(jī)器數(shù)機(jī)器數(shù)大連理工大學(xué) 軟件學(xué)院 賴曉晨1、機(jī)器數(shù)和真值、機(jī)器數(shù)和真值帶符號的數(shù)帶符號的數(shù) 符號數(shù)字化的數(shù)符號數(shù)字化的數(shù)+ 0.10110 1011小數(shù)點(diǎn)的位置小數(shù)點(diǎn)的位置+ 11000 1100小數(shù)點(diǎn)的位置小數(shù)點(diǎn)的位置 11001 1100小數(shù)點(diǎn)的位置小數(shù)點(diǎn)的位置

4、0.10111 1011小數(shù)點(diǎn)的位置小數(shù)點(diǎn)的位置真值真值 機(jī)器數(shù)機(jī)器數(shù)機(jī)器數(shù)按照不同的編碼格式,分為原碼、機(jī)器數(shù)按照不同的編碼格式,分為原碼、反碼、補(bǔ)碼、移碼等類型。反碼、補(bǔ)碼、移碼等類型。大連理工大學(xué) 軟件學(xué)院 賴曉晨2、原碼表示法、原碼表示法p 符號位為符號位為0表示正數(shù),為表示正數(shù),為1表示負(fù)數(shù),數(shù)值表示負(fù)數(shù),數(shù)值部分為真值的絕對值,又稱為部分為真值的絕對值,又稱為帶符號的絕帶符號的絕對值對值。p 約定整數(shù)的符號位與數(shù)值位用逗號分隔,約定整數(shù)的符號位與數(shù)值位用逗號分隔,小數(shù)的符號位與數(shù)值位用小數(shù)點(diǎn)分隔。小數(shù)的符號位與數(shù)值位用小數(shù)點(diǎn)分隔。大連理工大學(xué) 軟件學(xué)院 賴曉晨整數(shù)的原碼定義整數(shù)的原

5、碼定義整數(shù)整數(shù)x 為真值為真值n 為整數(shù)的位數(shù)為整數(shù)的位數(shù)如如x = +1110 x原原 = 0 , 1110 x原原 = 24 + 1110 = 1 , 1110 x = 1110 x原原 = 0,x 2n x 02n x 0 x 2n用用 逗號逗號 將符號位將符號位和數(shù)值部分隔開和數(shù)值部分隔開大連理工大學(xué) 軟件學(xué)院 賴曉晨小數(shù)的原碼定義小數(shù)的原碼定義x 為真值為真值如如x = + 0.1101x原原 = 0 . 1101 x = 0.1101x原原 = 1 ( 0.1101) = 1 . 1101 x 1 x 0 x原原 = 1 x 0 x 1x = 0.1000000 x原原 = 1 (

6、 0.1000000) = 1 . 1000000 x = + 0.1000000 x原原 = 0 . 1000000用用 小數(shù)點(diǎn)小數(shù)點(diǎn) 將符號將符號位和數(shù)值部分隔開位和數(shù)值部分隔開用用 小數(shù)點(diǎn)小數(shù)點(diǎn) 將符號將符號位和數(shù)值部分隔開位和數(shù)值部分隔開大連理工大學(xué) 軟件學(xué)院 賴曉晨原碼運(yùn)算舉例原碼運(yùn)算舉例例例 6.1 已知已知 x原原 = 1.0011 求求 x解解:例例 6.2 已知已知 x原原 = 1,1100 求求 x解解:x = 1 x原原 = 1 1.0011 = 0.0011x = 24 x原原 = 10000 1,1100 = 1100 0.00111100由定義得由定義得由定義得由定

7、義得大連理工大學(xué) 軟件學(xué)院 賴曉晨例例 6.4 求求 x = 0 的原碼的原碼解解: 設(shè)設(shè) x = + 0.0000例例 6.3 已知已知 x原原 = 0.1101 求求 x解:解: x = + 0.1101同理,對于整數(shù)同理,對于整數(shù)+ 0 原原 = 0,0000+ 0.0000原原 = 0.0000 x = 0.0000 0.0000原原 = 1.0000 0 原原 = 1,0000 + 0原原 0原原 根據(jù)根據(jù) 定義定義 x原原 = 0.1101大連理工大學(xué) 軟件學(xué)院 賴曉晨原碼表示法總結(jié)原碼表示法總結(jié)p 優(yōu)點(diǎn):表示方法簡單,直觀優(yōu)點(diǎn):表示方法簡單,直觀p 缺點(diǎn):加減運(yùn)算復(fù)雜缺點(diǎn):加減運(yùn)

8、算復(fù)雜 判斷正負(fù) 確定位置 判斷結(jié)果符號 電路復(fù)雜、不統(tǒng)一p 能否把減法轉(zhuǎn)換為加法呢?能否把減法轉(zhuǎn)換為加法呢?大連理工大學(xué) 軟件學(xué)院 賴曉晨3、補(bǔ)碼表示法、補(bǔ)碼表示法p 順時(shí)針轉(zhuǎn)順時(shí)針轉(zhuǎn)3格,與逆時(shí)針格,與逆時(shí)針轉(zhuǎn)(轉(zhuǎn)(12-3=9)格的結(jié)果一致,)格的結(jié)果一致,與順時(shí)針轉(zhuǎn)(與順時(shí)針轉(zhuǎn)(12+3=15)格的結(jié)果也一致。)格的結(jié)果也一致。p 12是一個(gè)特殊的數(shù)字,是會(huì)被是一個(gè)特殊的數(shù)字,是會(huì)被“自動(dòng)丟棄自動(dòng)丟棄”的,這個(gè)數(shù)字實(shí)際是鐘表的的,這個(gè)數(shù)字實(shí)際是鐘表的“模?!?,而時(shí),而時(shí)間值需要對間值需要對12求模。求模。p 3和和-9這一對數(shù),對于鐘表的意義是相同的,這一對數(shù),對于鐘表的意義是相同的,

9、這一對數(shù),互稱為以這一對數(shù),互稱為以12為模的補(bǔ)數(shù),為模的補(bǔ)數(shù),+3可可以用以用-9代替,同理代替,同理-3可用可用+9代替。代替。大連理工大學(xué) 軟件學(xué)院 賴曉晨3、補(bǔ)碼表示法、補(bǔ)碼表示法p 順時(shí)針轉(zhuǎn)順時(shí)針轉(zhuǎn)3格,與逆時(shí)針格,與逆時(shí)針轉(zhuǎn)(轉(zhuǎn)(12-3=9)格的結(jié)果一致,)格的結(jié)果一致,與順時(shí)針轉(zhuǎn)(與順時(shí)針轉(zhuǎn)(12+3=15)格的結(jié)果也一致。)格的結(jié)果也一致。p 12是一個(gè)特殊的數(shù)字,是會(huì)被是一個(gè)特殊的數(shù)字,是會(huì)被“自動(dòng)丟棄自動(dòng)丟棄”的,這個(gè)數(shù)字實(shí)際是鐘表的的,這個(gè)數(shù)字實(shí)際是鐘表的“模?!?,而時(shí),而時(shí)間值需要對間值需要對12求模。求模。p 3和和-9這一對數(shù),對于鐘表的意義是相同的,這一對數(shù),對

10、于鐘表的意義是相同的,這一對數(shù),互稱為一這一對數(shù),互稱為一12為模的補(bǔ)數(shù),為模的補(bǔ)數(shù),+3可可以用以用-9代替,同理代替,同理-3可用可用+9代替代替。 減去一個(gè)數(shù),可以用加上這個(gè)數(shù)的補(bǔ)數(shù)來代減去一個(gè)數(shù),可以用加上這個(gè)數(shù)的補(bǔ)數(shù)來代替,從而可以把減法轉(zhuǎn)變?yōu)榧臃ā?蓺w納出以下替,從而可以把減法轉(zhuǎn)變?yōu)榧臃???蓺w納出以下結(jié)論:結(jié)論:1.1.一個(gè)負(fù)數(shù)可用其正的補(bǔ)數(shù)來代替,這個(gè)正補(bǔ)數(shù)一個(gè)負(fù)數(shù)可用其正的補(bǔ)數(shù)來代替,這個(gè)正補(bǔ)數(shù)可以用此負(fù)數(shù)加模來求得。可以用此負(fù)數(shù)加模來求得。2.2.一個(gè)正數(shù)和負(fù)數(shù)互為補(bǔ)數(shù)時(shí),他們的絕對值之一個(gè)正數(shù)和負(fù)數(shù)互為補(bǔ)數(shù)時(shí),他們的絕對值之和即為模數(shù)。和即為模數(shù)。3.3.正數(shù)的補(bǔ)數(shù)即該正數(shù)

11、本身。正數(shù)的補(bǔ)數(shù)即該正數(shù)本身。大連理工大學(xué) 軟件學(xué)院 賴曉晨看一個(gè)二進(jìn)制的例子看一個(gè)二進(jìn)制的例子p 用二進(jìn)制數(shù)計(jì)算用二進(jìn)制數(shù)計(jì)算6-3的值。的值。6 - 3 =6-3=6+-3=0,110+1,101=10,011=0,011=+3大連理工大學(xué) 軟件學(xué)院 賴曉晨補(bǔ)碼的定義補(bǔ)碼的定義整數(shù)整數(shù)x 為真值為真值n 為整數(shù)的位數(shù)(不包括符號位)為整數(shù)的位數(shù)(不包括符號位)x補(bǔ)補(bǔ) = 0,x 2n x 02n+1 + x 0 x 2n(mod 2n+1)如如x = +1010 x補(bǔ)補(bǔ) = 27+1 +( 1011000 )=x補(bǔ)補(bǔ) = 0,1010 x = 10110001,0101000用用 逗號逗號

12、 將符號位將符號位和數(shù)值部分隔開和數(shù)值部分隔開1011000100000000大連理工大學(xué) 軟件學(xué)院 賴曉晨補(bǔ)碼的定義補(bǔ)碼的定義x 為真值為真值x = + 0.1110 x補(bǔ)補(bǔ) = x 1 x 02 + x 0 x 1(mod 2)如如x補(bǔ)補(bǔ) = 0.1110 x = 0.11000001.0100000 x補(bǔ)補(bǔ) = 2 + ( 0.1100000 )=用用 小數(shù)點(diǎn)小數(shù)點(diǎn) 將符號位將符號位和數(shù)值部分隔開和數(shù)值部分隔開0.110000010.0000000小數(shù)小數(shù)大連理工大學(xué) 軟件學(xué)院 賴曉晨求補(bǔ)碼的方法求補(bǔ)碼的方法p 定義法定義法p (負(fù)數(shù)的補(bǔ)碼)反碼(負(fù)數(shù)的補(bǔ)碼)反碼+1法(法(p224前前

13、10行)行)p (負(fù)數(shù)的補(bǔ)碼)符號位不變,數(shù)值位從左(負(fù)數(shù)的補(bǔ)碼)符號位不變,數(shù)值位從左到右依次取反,最右邊的到右依次取反,最右邊的1及其后的及其后的0不變。不變。p 補(bǔ)碼的補(bǔ)碼為原碼補(bǔ)碼的補(bǔ)碼為原碼大連理工大學(xué) 軟件學(xué)院 賴曉晨補(bǔ)碼舉例補(bǔ)碼舉例解:解:x = + 0.0001解:由定義得解:由定義得x = x補(bǔ)補(bǔ) 2 = 1.0001 10.0000例例 6.6 已知已知 x補(bǔ)補(bǔ) = 1.0001求求 x由定義得由定義得例例 6.5 已知已知 x補(bǔ)補(bǔ) = 0.0001求求 x= 0.1111 大連理工大學(xué) 軟件學(xué)院 賴曉晨補(bǔ)碼練習(xí):求下列真值的補(bǔ)碼補(bǔ)碼練習(xí):求下列真值的補(bǔ)碼真值真值0, 10

14、001101, 01110100.11101.00100.00000.00001.00000,10001101,10001100.11101.11100.00001.0000不能表示不能表示+ 0補(bǔ)補(bǔ) = 0補(bǔ)補(bǔ)= 1000110 x補(bǔ)補(bǔ) x原原x = +70 x = 0.1110 x = 0.0000 x = 70 x = 0.1110 x = 0.0000 x = 1.0000= 1000110大連理工大學(xué) 軟件學(xué)院 賴曉晨4、反碼表示法、反碼表示法p 反碼經(jīng)常用作求補(bǔ)碼的過渡。定義如下:反碼經(jīng)常用作求補(bǔ)碼的過渡。定義如下:整數(shù)整數(shù)x反反 = 0,x 2n x 0( 2n+1 1) + x

15、 0 x 2n(mod 2n+1 1)如如x = +1101x反反 = 0,1101 = 1,0010 x = 1101x反反 = (24+1 1) 1101 = 11111 1101用用 逗號逗號 將符號位將符號位和數(shù)值部分隔開和數(shù)值部分隔開x 為真值為真值n 為整數(shù)的位數(shù)為整數(shù)的位數(shù)大連理工大學(xué) 軟件學(xué)院 賴曉晨4、反碼表示法、反碼表示法小數(shù)小數(shù)x = + 0.1101x反反 = 0.1101x = 0.1010 x反反 = (2 2-4) 0.1010= 1.1111 0.1010= 1.0101如如x反反 = x 1 x 0( 2 2-n) + x 0 x 1(mod 2 2-n)用用

16、 小數(shù)點(diǎn)小數(shù)點(diǎn) 將符號位將符號位和數(shù)值部分隔開和數(shù)值部分隔開x 為真值為真值n 為小數(shù)的位數(shù)為小數(shù)的位數(shù)大連理工大學(xué) 軟件學(xué)院 賴曉晨反碼舉例反碼舉例例例 6.10 求求 0 的反碼的反碼設(shè)設(shè) x = + 0.0000+0.0000反反= 0.0000解:解:例例6.9 已知已知 x反反 = 1,1110 求求 x例例6.8 已知已知 x反反 = 0,1110 求求 x解:解:由定義得由定義得 x = + 1110解:解:= 1,1110 11111= 0001由定義得由定義得x = x反反 (24+1 1)x = 0.0000 0.0000反反= 1.1111 + 0反反 0反反 大連理工大

17、學(xué) 軟件學(xué)院 賴曉晨三種機(jī)器數(shù)的小結(jié)三種機(jī)器數(shù)的小結(jié)p 最高位最高位為為符號位符號位,書寫上用,書寫上用“,”(整數(shù))(整數(shù))或或“.”(小數(shù))將數(shù)值部分和符號位隔開。(小數(shù))將數(shù)值部分和符號位隔開。p 對于對于正數(shù)正數(shù),原碼,原碼 = 補(bǔ)碼補(bǔ)碼 = 反碼反碼p 對于對于負(fù)數(shù)負(fù)數(shù) ,符號位為,符號位為 1,其,其 數(shù)值部分為:數(shù)值部分為:原碼除符號位外每位取反末位加原碼除符號位外每位取反末位加 1得到補(bǔ)得到補(bǔ)碼,原碼除符號位外每位取反得到反碼。碼,原碼除符號位外每位取反得到反碼。大連理工大學(xué) 軟件學(xué)院 賴曉晨例例6.11 000000000000000100000010011111111000

18、000010000001111111011111111011111111128129-0-1-128-127-127-126二進(jìn)制代碼二進(jìn)制代碼 無符號數(shù)無符號數(shù)對應(yīng)的真值對應(yīng)的真值原碼對應(yīng)原碼對應(yīng) 的真值的真值補(bǔ)碼對應(yīng)補(bǔ)碼對應(yīng) 的真值的真值反碼對應(yīng)反碼對應(yīng) 的真值的真值012127253254255-125-126-127-3-2-1-2-1-0+0+1+2+127+0+1+2+127+0+1+2+127+0 設(shè)機(jī)器數(shù)字長為設(shè)機(jī)器數(shù)字長為 8 位(其中位為符號位)位(其中位為符號位)對于整數(shù),當(dāng)其分別代表無符號數(shù)、原碼、補(bǔ)碼和對于整數(shù),當(dāng)其分別代表無符號數(shù)、原碼、補(bǔ)碼和反碼時(shí),對應(yīng)的真值范圍

19、各為多少?反碼時(shí),對應(yīng)的真值范圍各為多少?大連理工大學(xué) 軟件學(xué)院 賴曉晨例例6.12 解:解:已知已知 y補(bǔ)補(bǔ) 求求 y補(bǔ)補(bǔ) y補(bǔ)補(bǔ) = 0. y1 y2 yny = 0. y1 y2 yny = 0. y1 y2 yn y補(bǔ)補(bǔ) = 1.y1 y2 yn + 2-n y補(bǔ)補(bǔ) = 1. y1 y2 yn y原原 = 1. y1 y2 yn + 2-n y = (0. y1 y2 yn + 2-n) y = 0. y1 y2 yn + 2-n y補(bǔ)補(bǔ) = 0. y1 y2 yn + 2-n設(shè)設(shè) y補(bǔ)補(bǔ) = y0. y1 y2 yn大連理工大學(xué) 軟件學(xué)院 賴曉晨例例6.12 解:解:已知已知 y補(bǔ)補(bǔ)

20、 求求 y補(bǔ)補(bǔ) y補(bǔ)補(bǔ) = 0. y1 y2 yny = 0. y1 y2 yny = 0. y1 y2 yn y補(bǔ)補(bǔ) = 1.y1 y2 yn + 2-n y補(bǔ)補(bǔ) = 1. y1 y2 yn y原原 = 1. y1 y2 yn + 2-n y = (0. y1 y2 yn + 2-n) y = 0. y1 y2 yn + 2-n y補(bǔ)補(bǔ) = 0. y1 y2 yn + 2-n設(shè)設(shè) y補(bǔ)補(bǔ) = y0. y1 y2 yn y y連同符號位在內(nèi),按位取反,連同符號位在內(nèi),按位取反,末位加末位加1 1,即得,即得-y-y大連理工大學(xué) 軟件學(xué)院 賴曉晨5、移碼表示法、移碼表示法補(bǔ)碼表示很難直接判斷其真

21、值大小補(bǔ)碼表示很難直接判斷其真值大小如如 十進(jìn)制十進(jìn)制x = +21x = 21x = +31x = 31x + 25+10101 + 100000+11111 + 10000010101 + 10000011111 + 1000000,101011,010110,111111,00001+10101 10101+11111 11111= 110101= 001011= 111111= 000001二進(jìn)制二進(jìn)制補(bǔ)碼補(bǔ)碼x = +21x = 21x = +31x = 31大連理工大學(xué) 軟件學(xué)院 賴曉晨移碼的定義移碼的定義x 為真值,為真值,n 為為 整數(shù)的位數(shù)整數(shù)的位數(shù)x移移 = 2n + x(

22、2nx 2n)大連理工大學(xué) 軟件學(xué)院 賴曉晨移碼的定義移碼的定義x 為真值,為真值,n 為為 整數(shù)的位數(shù)整數(shù)的位數(shù)x移移 = 2n + x(2nx 2n)x 為真值為真值n 為整數(shù)的位數(shù)(不包括符號位)為整數(shù)的位數(shù)(不包括符號位)x補(bǔ)補(bǔ) = 0,x 2n x 02n+1 + x 0 x 2n(mod 2n+1)補(bǔ)碼的定義補(bǔ)碼的定義大連理工大學(xué) 軟件學(xué)院 賴曉晨移碼的定義移碼的定義x 為真值,為真值,n 為為 整數(shù)的位數(shù)整數(shù)的位數(shù)x移移 = 2n + x(2nx 2n)x 為真值為真值n 為整數(shù)的位數(shù)(不包括符號位)為整數(shù)的位數(shù)(不包括符號位)x補(bǔ)補(bǔ) = 0,x 2n x 02n+1 + x 0

23、 x 2n(mod 2n+1)補(bǔ)碼的定義補(bǔ)碼的定義移碼與補(bǔ)碼的數(shù)值部分相同,符號位相反。移碼與補(bǔ)碼的數(shù)值部分相同,符號位相反。大連理工大學(xué) 軟件學(xué)院 賴曉晨移碼在數(shù)軸上的表示移碼在數(shù)軸上的表示x移碼移碼2n+112n2n 12n00真值真值如如x = 10100 x移移 = 25 + 10100用用 逗號逗號 將符號位將符號位和數(shù)值部分隔開和數(shù)值部分隔開x = 10100 x移移 = 25 10100 x移移 = 2n + x(2nx 2n)= 1,10100= 0,01100大連理工大學(xué) 軟件學(xué)院 賴曉晨移碼的特點(diǎn)移碼的特點(diǎn) 當(dāng)當(dāng) x = 0 時(shí)時(shí) +0移移 = 25 + 0 當(dāng)當(dāng) n =

24、5 時(shí)時(shí)可見,可見,最小真值的移碼為全最小真值的移碼為全 0。用移碼表示浮點(diǎn)數(shù)用移碼表示浮點(diǎn)數(shù)的階碼能方便地判斷浮點(diǎn)數(shù)的階碼大小的階碼能方便地判斷浮點(diǎn)數(shù)的階碼大小= 1,00000= 1,00000= 000000 0移移 = 25 0 +0移移 = 0移移 100000移移= 25 100000最小的真值為最小的真值為 25= 100000大連理工大學(xué) 軟件學(xué)院 賴曉晨6.2 數(shù)的定點(diǎn)表示和浮點(diǎn)表示數(shù)的定點(diǎn)表示和浮點(diǎn)表示小數(shù)點(diǎn)按約定方式標(biāo)出小數(shù)點(diǎn)按約定方式標(biāo)出一、定點(diǎn)表示一、定點(diǎn)表示Sf S1S2 Sn數(shù)符數(shù)符數(shù)值部分?jǐn)?shù)值部分小數(shù)點(diǎn)位置小數(shù)點(diǎn)位置Sf S1S2 Sn數(shù)符數(shù)符數(shù)值部分?jǐn)?shù)值部分小

25、數(shù)點(diǎn)位置小數(shù)點(diǎn)位置或或定點(diǎn)機(jī)定點(diǎn)機(jī)小數(shù)小數(shù) 整數(shù)整數(shù) 原碼原碼補(bǔ)碼補(bǔ)碼反碼反碼(1 2-n) +(1 2-n)(2n 1) +( 2n 1) 1 +(1 2-n)(1 2-n) +(1 2-n)(2n 1) +( 2n 1) 2n +( 2n 1)大連理工大學(xué) 軟件學(xué)院 賴曉晨二、浮點(diǎn)表示二、浮點(diǎn)表示N = Srj浮點(diǎn)數(shù)的一般形式浮點(diǎn)數(shù)的一般形式S 尾數(shù)尾數(shù)j 階碼階碼r 基數(shù)(基值)基數(shù)(基值)計(jì)算機(jī)中計(jì)算機(jī)中 r 取取 2、4、8、16 等等當(dāng)當(dāng) r = 2N = 11.0101= 0.110101210 = 1.1010121 = 1101.012-10 = 0.001101012100

26、 S 小數(shù)、可正可負(fù),小數(shù)、可正可負(fù),j 整數(shù)、可正可負(fù)整數(shù)、可正可負(fù) 規(guī)格化數(shù)規(guī)格化數(shù)二進(jìn)制表示二進(jìn)制表示大連理工大學(xué) 軟件學(xué)院 賴曉晨1、浮點(diǎn)數(shù)的表示形式、浮點(diǎn)數(shù)的表示形式Sf 代表浮點(diǎn)數(shù)的符號代表浮點(diǎn)數(shù)的符號n 其位數(shù)反映浮點(diǎn)數(shù)的精度其位數(shù)反映浮點(diǎn)數(shù)的精度m 其位數(shù)反映浮點(diǎn)數(shù)的表示范圍其位數(shù)反映浮點(diǎn)數(shù)的表示范圍jf j1 j2 jm Sf S1 S2 Sn j 階碼階碼S 尾數(shù)尾數(shù)階符階符數(shù)符數(shù)符階碼的階碼的數(shù)值部分?jǐn)?shù)值部分尾數(shù)的數(shù)值部分尾數(shù)的數(shù)值部分小數(shù)點(diǎn)位置小數(shù)點(diǎn)位置大連理工大學(xué) 軟件學(xué)院 賴曉晨2、浮點(diǎn)數(shù)的表示范圍、浮點(diǎn)數(shù)的表示范圍2( 2m1)( 1 2n)2( 2m1)2n2(

27、 2m1)( 1 2n)2( 2m1)2n最小負(fù)數(shù)最小負(fù)數(shù)最大負(fù)數(shù)最大負(fù)數(shù)最大正數(shù)最大正數(shù)最小正數(shù)最小正數(shù)負(fù)數(shù)區(qū)負(fù)數(shù)區(qū)正數(shù)區(qū)正數(shù)區(qū)下溢下溢0上溢上溢上溢上溢215 ( 1 2-10) 2-15 2-10 215 ( 1 2-10) 設(shè)設(shè) m = 4 n =10上溢上溢 階碼階碼 最大階碼最大階碼 中斷溢出處理中斷溢出處理下溢下溢 階碼階碼 最小階碼最小階碼 按按 機(jī)器零機(jī)器零 處理處理2-15 2-10 大連理工大學(xué) 軟件學(xué)院 賴曉晨練習(xí)練習(xí) 設(shè)機(jī)器數(shù)字長為設(shè)機(jī)器數(shù)字長為 24 位,欲表示位,欲表示3萬的十進(jìn)制數(shù),萬的十進(jìn)制數(shù),試問在保證數(shù)的最大精度的前提下,除階符、數(shù)符各試問在保證數(shù)的最大精

28、度的前提下,除階符、數(shù)符各 取取1 位外,階碼、尾數(shù)各取幾位?位外,階碼、尾數(shù)各取幾位?滿足滿足 最大精度最大精度 可取可取 m = 4,n = 18解:解:m = 4,5,6,指數(shù)為指數(shù)為15 可反映可反映 3 萬之間的十進(jìn)制數(shù)萬之間的十進(jìn)制數(shù) 215 = 32768214 = 16384215 0. 18位位大連理工大學(xué) 軟件學(xué)院 賴曉晨3、浮點(diǎn)數(shù)的規(guī)格化表示、浮點(diǎn)數(shù)的規(guī)格化表示p r=2, 尾數(shù)的最高位為尾數(shù)的最高位為1p r=4, 尾數(shù)的最高尾數(shù)的最高2位不全為位不全為0p r=8, 尾數(shù)的最高尾數(shù)的最高3為不全為為不全為0大連理工大學(xué) 軟件學(xué)院 賴曉晨4、浮點(diǎn)數(shù)的規(guī)格化、浮點(diǎn)數(shù)的規(guī)格

29、化r = 2左規(guī)左規(guī) 尾數(shù)左移尾數(shù)左移 1 位,階碼減位,階碼減 1右規(guī)右規(guī) 尾數(shù)右移尾數(shù)右移 1 位,階碼加位,階碼加 1r = 4左規(guī)左規(guī) 尾數(shù)左移尾數(shù)左移 2 位,階碼減位,階碼減 1右規(guī)右規(guī) 尾數(shù)右移尾數(shù)右移 2 位,階碼加位,階碼加 1r = 8左規(guī)左規(guī) 尾數(shù)左移尾數(shù)左移 3 位,階碼減位,階碼減 1右規(guī)右規(guī) 尾數(shù)右移尾數(shù)右移 3 位,階碼加位,階碼加 1大連理工大學(xué) 軟件學(xué)院 賴曉晨最大正數(shù)最大正數(shù)= 215( 1210 ) 2+1111 0.111111111110 個(gè)個(gè) 1最小正數(shù)最小正數(shù)最大負(fù)數(shù)最大負(fù)數(shù)最小負(fù)數(shù)最小負(fù)數(shù)= 21521 = 215( 12 10 ) = 216=

30、 21521 = 2162-1111 0.10000000009 個(gè)個(gè) 02-1111 ( 0.1000000000)9 個(gè)個(gè) 02+1111 ( 0.1111111111)10 個(gè)個(gè) 1設(shè)設(shè) m = 4,n = 10,r = 2尾數(shù)規(guī)格化后的浮點(diǎn)數(shù)表示范圍尾數(shù)規(guī)格化后的浮點(diǎn)數(shù)表示范圍例題例題大連理工大學(xué) 軟件學(xué)院 賴曉晨例題例題將將 + 寫成二進(jìn)制定點(diǎn)數(shù)、浮點(diǎn)數(shù)及在定點(diǎn)機(jī)和浮點(diǎn)寫成二進(jìn)制定點(diǎn)數(shù)、浮點(diǎn)數(shù)及在定點(diǎn)機(jī)和浮點(diǎn)機(jī)中的機(jī)器數(shù)形式。其中數(shù)值部分均取機(jī)中的機(jī)器數(shù)形式。其中數(shù)值部分均取 10 位,數(shù)符取位,數(shù)符取 1 位,浮點(diǎn)數(shù)階碼取位,浮點(diǎn)數(shù)階碼取 5 位(含位(含1位階符)。位階符)。19

31、128解:解:設(shè)設(shè) x = +19128二進(jìn)制形式二進(jìn)制形式定點(diǎn)表示定點(diǎn)表示浮點(diǎn)規(guī)格化形式浮點(diǎn)規(guī)格化形式x原原 = 1, 0010; 0. 1001100000 x補(bǔ)補(bǔ) = 1, 1110; 0. 1001100000 x反反 = 1, 1101; 0. 1001100000定點(diǎn)機(jī)中定點(diǎn)機(jī)中浮點(diǎn)機(jī)中浮點(diǎn)機(jī)中000 x = 0.0010011x = 0.0010011x = 0.10011000002-10 x原原 = x補(bǔ)補(bǔ) = x反反 = 0.0010011000大連理工大學(xué) 軟件學(xué)院 賴曉晨x = 1110100000例題例題 將將 58 表示成二進(jìn)制定點(diǎn)數(shù)和浮點(diǎn)數(shù),表示成二進(jìn)制定點(diǎn)數(shù)和浮

32、點(diǎn)數(shù),并寫出它在定點(diǎn)機(jī)和浮點(diǎn)機(jī)中的三種機(jī)器數(shù)及階碼并寫出它在定點(diǎn)機(jī)和浮點(diǎn)機(jī)中的三種機(jī)器數(shù)及階碼為移碼、尾數(shù)為補(bǔ)碼的形式(其他要求同上例)。為移碼、尾數(shù)為補(bǔ)碼的形式(其他要求同上例)。解:解:設(shè)設(shè) x = 58二進(jìn)制形式二進(jìn)制形式定點(diǎn)表示定點(diǎn)表示浮點(diǎn)規(guī)格化形式浮點(diǎn)規(guī)格化形式x原原 = 1, 0000111010 x補(bǔ)補(bǔ) = 1, 1111000110 x反反 = 1, 1111000101x原原 = 0, 0110; 1. 1110100000 x補(bǔ)補(bǔ) = 0, 0110; 1. 0001100000 x反反 = 0, 0110; 1. 0001011111定點(diǎn)機(jī)中定點(diǎn)機(jī)中浮點(diǎn)機(jī)中浮點(diǎn)機(jī)中x階移

33、、尾補(bǔ)階移、尾補(bǔ) = 1, 0110; 1. 0001100000 x = 111010 x = (0.1110100000) 2110大連理工大學(xué) 軟件學(xué)院 賴曉晨例例6.15 寫出對應(yīng)下圖所示的浮點(diǎn)數(shù)的補(bǔ)碼寫出對應(yīng)下圖所示的浮點(diǎn)數(shù)的補(bǔ)碼 形式。形式。 設(shè)設(shè) n = 10,m = 4, 階符、數(shù)符各取階符、數(shù)符各取 1位。位。負(fù)數(shù)區(qū)負(fù)數(shù)區(qū)正數(shù)區(qū)正數(shù)區(qū)下溢下溢0上溢上溢上溢上溢2( 2m1)( 1 2n)2( 2m1)(1 2n)2( 2m1)2n最小負(fù)數(shù)最小負(fù)數(shù)最大正數(shù)最大正數(shù)最小正數(shù)最小正數(shù)2( 2m1)2n最大負(fù)數(shù)最大負(fù)數(shù)解:解:真值真值最大正數(shù)最大正數(shù)最小正數(shù)最小正數(shù)最大負(fù)數(shù)最大負(fù)數(shù)最

34、小負(fù)數(shù)最小負(fù)數(shù)215(1 210)215 210215 210 215(1 210)0,1111; 0.11111111111,0001; 0.00000000011,0001; 1.11111111110,1111; 1.0000000001補(bǔ)碼補(bǔ)碼大連理工大學(xué) 軟件學(xué)院 賴曉晨 當(dāng)浮點(diǎn)數(shù)當(dāng)浮點(diǎn)數(shù) 尾數(shù)為尾數(shù)為 0 時(shí),不論其階碼為何值時(shí),不論其階碼為何值 按機(jī)器零處理按機(jī)器零處理機(jī)器零機(jī)器零 當(dāng)浮點(diǎn)數(shù)當(dāng)浮點(diǎn)數(shù) 階碼等于或小于它所表示的最小階碼等于或小于它所表示的最小 數(shù)數(shù) 時(shí),不論尾數(shù)為何值,按機(jī)器零處理時(shí),不論尾數(shù)為何值,按機(jī)器零處理如如 m = 4 n = 10當(dāng)階碼用移碼,尾數(shù)用補(bǔ)碼

35、表示時(shí),機(jī)器零為當(dāng)階碼用移碼,尾數(shù)用補(bǔ)碼表示時(shí),機(jī)器零為0, 0 0 0 0;0. 0 0 0 1, 0 0 0 0 ; . , ; 0. 0 0 0有利于機(jī)器中有利于機(jī)器中“ 判判 0 ” 電路的實(shí)現(xiàn)電路的實(shí)現(xiàn)當(dāng)階碼和尾數(shù)都用補(bǔ)碼表示時(shí),機(jī)器零為當(dāng)階碼和尾數(shù)都用補(bǔ)碼表示時(shí),機(jī)器零為(階碼(階碼 = 16)大連理工大學(xué) 軟件學(xué)院 賴曉晨短實(shí)數(shù)短實(shí)數(shù)長實(shí)數(shù)長實(shí)數(shù)臨時(shí)實(shí)數(shù)臨時(shí)實(shí)數(shù)符號位符號位 S 階碼階碼 尾數(shù)尾數(shù) 總位數(shù)總位數(shù)1 8 23 321 11 52 641 15 64 80S 階碼(含階符)階碼(含階符) 尾尾 數(shù)數(shù)數(shù)符數(shù)符小數(shù)點(diǎn)位置小數(shù)點(diǎn)位置階碼用移碼表示,尾數(shù)為規(guī)格化表示階碼用移碼

36、表示,尾數(shù)為規(guī)格化表示四、四、IEEE754標(biāo)準(zhǔn)標(biāo)準(zhǔn)大連理工大學(xué) 軟件學(xué)院 賴曉晨6.3 定點(diǎn)運(yùn)算定點(diǎn)運(yùn)算一、移位運(yùn)算一、移位運(yùn)算1、移位的意義、移位的意義15 m = 1500 cm 小數(shù)點(diǎn)右移小數(shù)點(diǎn)右移 2 位位機(jī)器用語機(jī)器用語15 相對于小數(shù)點(diǎn)相對于小數(shù)點(diǎn) 左移左移 2 位位( 小數(shù)點(diǎn)不動(dòng)小數(shù)點(diǎn)不動(dòng) ).左移:絕對值擴(kuò)大左移:絕對值擴(kuò)大右移:絕對值縮小右移:絕對值縮小在計(jì)算機(jī)中,在計(jì)算機(jī)中,移位與加減配合,能夠?qū)崿F(xiàn)乘除運(yùn)算移位與加減配合,能夠?qū)崿F(xiàn)乘除運(yùn)算移位導(dǎo)致寄存器中出現(xiàn)空位,如何處理?移位導(dǎo)致寄存器中出現(xiàn)空位,如何處理?大連理工大學(xué) 軟件學(xué)院 賴曉晨2、算術(shù)移位(有符號數(shù)移位)規(guī)則、

37、算術(shù)移位(有符號數(shù)移位)規(guī)則1右移 添 1左移 添 00反 碼補(bǔ) 碼原 碼負(fù)數(shù)0原碼、補(bǔ)碼、反碼正數(shù)添補(bǔ)代碼碼 制符號位不變符號位不變大連理工大學(xué) 軟件學(xué)院 賴曉晨例例6.16設(shè)機(jī)器數(shù)字長為設(shè)機(jī)器數(shù)字長為 8 位(含位符號位),寫出位(含位符號位),寫出A = +26時(shí),三種機(jī)器數(shù)左、右移一位和兩位后的表時(shí),三種機(jī)器數(shù)左、右移一位和兩位后的表示形式及對應(yīng)的真值,并分析結(jié)果的正確性。示形式及對應(yīng)的真值,并分析結(jié)果的正確性。解:解:A = +26則則 A原原 = A補(bǔ)補(bǔ) = A反反 = 0,0011010 + 60,0000110 +130,0001101+1040,1101000 + 520,0

38、110100 +260,0011010移位前A原=A補(bǔ)=A反對應(yīng)的真值機(jī) 器 數(shù)移位操作= +11010 左移一位左移兩位右移一位右移兩位大連理工大學(xué) 軟件學(xué)院 賴曉晨例例6.16設(shè)機(jī)器數(shù)字長為設(shè)機(jī)器數(shù)字長為 8 位(含位符號位),寫出位(含位符號位),寫出A = +26時(shí),三種機(jī)器數(shù)左、右移一位和兩位后的表時(shí),三種機(jī)器數(shù)左、右移一位和兩位后的表示形式及對應(yīng)的真值,并分析結(jié)果的正確性。示形式及對應(yīng)的真值,并分析結(jié)果的正確性。解:解:A = +26則則 A原原 = A補(bǔ)補(bǔ) = A反反 = 0,0011010 + 60,0000110 +130,0001101+1040,1101000 + 520

39、,0110100 +260,0011010移位前A原=A補(bǔ)=A反對應(yīng)的真值機(jī) 器 數(shù)移位操作= +11010 左移一位左移兩位右移一位右移兩位對于正數(shù),三種機(jī)器數(shù)移位后符號位均不變,對于正數(shù),三種機(jī)器數(shù)移位后符號位均不變,左移時(shí)最高位丟失左移時(shí)最高位丟失1 1,則結(jié)果出錯(cuò);右移時(shí)最低位,則結(jié)果出錯(cuò);右移時(shí)最低位丟失丟失1 1,影響精度。,影響精度。大連理工大學(xué) 軟件學(xué)院 賴曉晨例例6.17設(shè)機(jī)器數(shù)字長為設(shè)機(jī)器數(shù)字長為 8 位(含位符號位),寫出位(含位符號位),寫出A = 26時(shí),三種機(jī)器數(shù)左、右移一位和兩位后的表時(shí),三種機(jī)器數(shù)左、右移一位和兩位后的表示形式及對應(yīng)的真值,并分析結(jié)果的正確性。示

40、形式及對應(yīng)的真值,并分析結(jié)果的正確性。解:解:A = 26 61,0000110 131,0001101 1041,1101000 521,0110100 261,0011010移位前對應(yīng)的真值機(jī) 器 數(shù)移位操作原碼原碼= 11010 左移一位左移兩位右移一位右移兩位大連理工大學(xué) 軟件學(xué)院 賴曉晨例例6.17設(shè)機(jī)器數(shù)字長為設(shè)機(jī)器數(shù)字長為 8 位(含位符號位),寫出位(含位符號位),寫出A = 26時(shí),三種機(jī)器數(shù)左、右移一位和兩位后的表時(shí),三種機(jī)器數(shù)左、右移一位和兩位后的表示形式及對應(yīng)的真值,并分析結(jié)果的正確性。示形式及對應(yīng)的真值,并分析結(jié)果的正確性。解:解:A = 26 61,0000110

41、131,0001101 1041,1101000 521,0110100 261,0011010移位前對應(yīng)的真值機(jī) 器 數(shù)移位操作原碼原碼= 11010 左移一位左移兩位右移一位右移兩位對于負(fù)數(shù),三種機(jī)器數(shù)移位后符號位均不變,對于負(fù)數(shù),三種機(jī)器數(shù)移位后符號位均不變,負(fù)數(shù)的原碼左移時(shí),高位丟負(fù)數(shù)的原碼左移時(shí),高位丟1 1,結(jié)果出錯(cuò);右移時(shí),結(jié)果出錯(cuò);右移時(shí),低位丟低位丟1 1,影響精度。,影響精度。大連理工大學(xué) 軟件學(xué)院 賴曉晨 61,1111001 131,1110010 1041,0010111 521,1001011 261,1100101移位前對應(yīng)的真值機(jī) 器 數(shù)移位操作 71,1111

42、001 131,1110011 1041,0011000 521,1001100 261,1100110移位前對應(yīng)的真值機(jī) 器 數(shù)移位操作補(bǔ)碼補(bǔ)碼反碼反碼左移一位左移兩位右移一位右移兩位左移一位左移兩位右移一位右移兩位大連理工大學(xué) 軟件學(xué)院 賴曉晨 61,1111001 131,1110010 1041,0010111 521,1001011 261,1100101移位前對應(yīng)的真值機(jī) 器 數(shù)移位操作 71,1111001 131,1110011 1041,0011000 521,1001100 261,1100110移位前對應(yīng)的真值機(jī) 器 數(shù)移位操作補(bǔ)碼補(bǔ)碼反碼反碼左移一位左移兩位右移一位右移

43、兩位左移一位左移兩位右移一位右移兩位對于負(fù)數(shù),三種機(jī)器數(shù)移位后符號位均不變。對于負(fù)數(shù),三種機(jī)器數(shù)移位后符號位均不變。負(fù)數(shù)的補(bǔ)碼左移時(shí),高位丟負(fù)數(shù)的補(bǔ)碼左移時(shí),高位丟0 0,結(jié)果出錯(cuò),右移時(shí),結(jié)果出錯(cuò),右移時(shí),低位丟低位丟1 1,影響精度;負(fù)數(shù)的反碼左移時(shí),最高位,影響精度;負(fù)數(shù)的反碼左移時(shí),最高位丟失丟失0 0,則結(jié)果出錯(cuò);右移時(shí)最低位丟失,則結(jié)果出錯(cuò);右移時(shí)最低位丟失0 0,影響,影響精度。精度。大連理工大學(xué) 軟件學(xué)院 賴曉晨3、算術(shù)移位的硬件實(shí)現(xiàn)、算術(shù)移位的硬件實(shí)現(xiàn)(a)真值為正真值為正 (b)負(fù)數(shù)的原碼負(fù)數(shù)的原碼(c)負(fù)數(shù)的補(bǔ)碼負(fù)數(shù)的補(bǔ)碼(d)負(fù)數(shù)的反碼負(fù)數(shù)的反碼00010丟丟 1丟丟

44、1出錯(cuò)出錯(cuò)影響精度影響精度出錯(cuò)出錯(cuò)影響精度影響精度正確正確影響精度影響精度正確正確正確正確大連理工大學(xué) 軟件學(xué)院 賴曉晨4、算術(shù)移位和邏輯移位的區(qū)別、算術(shù)移位和邏輯移位的區(qū)別p 算術(shù)移位:有符號數(shù)的移位算術(shù)移位:有符號數(shù)的移位p 邏輯移位:無符號數(shù)的移位邏輯移位:無符號數(shù)的移位 邏輯左移:低位補(bǔ)0,高位移丟 邏輯右移:高位補(bǔ)0,低位移丟例如例如 01010011邏輯左移邏輯左移10100110邏輯右移邏輯右移01011001算術(shù)左移算術(shù)左移算術(shù)右移算術(shù)右移0010011011011001(補(bǔ)碼)(補(bǔ)碼)10110010大連理工大學(xué) 軟件學(xué)院 賴曉晨二、加減法運(yùn)算二、加減法運(yùn)算1、補(bǔ)碼加減運(yùn)算公

45、式、補(bǔ)碼加減運(yùn)算公式(1) 加法加法 (2) 減法減法 整數(shù)整數(shù) A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)= A+B補(bǔ)補(bǔ)(mod 2n+1)小數(shù)小數(shù) A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)= A+B補(bǔ)補(bǔ)(mod 2)AB= A+(B )整數(shù)整數(shù) A B補(bǔ)補(bǔ)= A+(B )補(bǔ)補(bǔ)= A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)(mod 2n+1)小數(shù)小數(shù) A B補(bǔ)補(bǔ)= A+(B )補(bǔ)補(bǔ)(mod 2)連同符號位一起相加,符號位產(chǎn)生的進(jìn)位自然丟掉連同符號位一起相加,符號位產(chǎn)生的進(jìn)位自然丟掉= A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)大連理工大學(xué) 軟件學(xué)院 賴曉晨2. 舉例舉例解:解:A補(bǔ)補(bǔ)B補(bǔ)補(bǔ)A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)+= 0 . 1 0 1 1= 1 . 1 0 1 1= 1 0 . 0 1

46、1 0 = A + B補(bǔ)補(bǔ)驗(yàn)證驗(yàn)證例例 6.18設(shè)設(shè) A = 0.1011,B = 0.0101求求 A + B補(bǔ)補(bǔ)0.1011 0.01010.0110 A + B = 0 . 0 1 1 0A補(bǔ)補(bǔ)B補(bǔ)補(bǔ)A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)+= 1 , 0 1 1 1= 1 , 1 0 1 1= 1 1 , 0 0 1 0= A + B補(bǔ)補(bǔ)驗(yàn)證驗(yàn)證 1001 1110 0101+例例 6.19設(shè)設(shè) A = 9,B = 5 求求 A+B補(bǔ)補(bǔ)解:解: A + B = 1110大連理工大學(xué) 軟件學(xué)院 賴曉晨例例 設(shè)機(jī)器數(shù)字長為設(shè)機(jī)器數(shù)字長為 8 位(含位(含 1 位符號位)位符號位)且且 A = 15, B = 2

47、4,用補(bǔ)碼求,用補(bǔ)碼求 A B解:解:A = 15 = 0001111B = 24 = 0011000A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)+A補(bǔ)補(bǔ)= 0, 0001111 B補(bǔ)補(bǔ)= 1, 1101000= 1, 1110111= A B補(bǔ)補(bǔ)-B原原 = 1, 0011000練習(xí)練習(xí) 1設(shè)設(shè) x = y = ,用補(bǔ)碼求,用補(bǔ)碼求 x+y9161116x + y = 0.1100 =1216練習(xí)練習(xí) 2 設(shè)機(jī)器數(shù)字長為設(shè)機(jī)器數(shù)字長為 8 位(含位(含 1 位符號位)位符號位) 且且 A = 97,B = +41,用補(bǔ)碼求,用補(bǔ)碼求 A BA B = + 1110110 = + 118 A B = 1001 = 9錯(cuò)

48、錯(cuò)錯(cuò)錯(cuò)大連理工大學(xué) 軟件學(xué)院 賴曉晨3、溢出、溢出運(yùn)算結(jié)果超出計(jì)算機(jī)字長所能表示范圍運(yùn)算結(jié)果超出計(jì)算機(jī)字長所能表示范圍的情況,稱為的情況,稱為溢出溢出。加減運(yùn)算可能出現(xiàn)的三種情況,假設(shè)加減運(yùn)算可能出現(xiàn)的三種情況,假設(shè)A、B均為正數(shù)。均為正數(shù)。A+B:有可能溢出:有可能溢出A-B:一定不會(huì)溢出:一定不會(huì)溢出-A-B:有可能溢出:有可能溢出大連理工大學(xué) 軟件學(xué)院 賴曉晨溢出判斷溢出判斷1)(符號相同兩數(shù))一位符號位判斷溢出)(符號相同兩數(shù))一位符號位判斷溢出 參加運(yùn)算的兩個(gè)數(shù)(減法時(shí)即為被減數(shù)和求補(bǔ)后的減數(shù))符號相同,其結(jié)果的符號與原操作數(shù)的符號不同,即為溢出。A = -0.1011B = -0.

49、0111 A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)+A補(bǔ)補(bǔ)= 1.0101 B補(bǔ)補(bǔ)= 1.1001= 10.1110= 0.1110兩數(shù)符號位相同,結(jié)果的符號位發(fā)生變化,溢出。兩數(shù)符號位相同,結(jié)果的符號位發(fā)生變化,溢出。大連理工大學(xué) 軟件學(xué)院 賴曉晨溢出判斷溢出判斷2)(任意符號位兩數(shù))一位符號位判斷溢出)(任意符號位兩數(shù))一位符號位判斷溢出 參加運(yùn)算的兩個(gè)數(shù),符號位可以不同,如果運(yùn)算結(jié)果中最高數(shù)值位的進(jìn)位與符號位的進(jìn)位不同,則發(fā)生了溢出。A = -0.1011B = -0.0111 A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)+A補(bǔ)補(bǔ)= 1.0101 B補(bǔ)補(bǔ)= 1.1001= 10.1110= 0.1110最高數(shù)值位無進(jìn)位,符號位有進(jìn)位,

50、溢出。最高數(shù)值位無進(jìn)位,符號位有進(jìn)位,溢出。大連理工大學(xué) 軟件學(xué)院 賴曉晨溢出判斷溢出判斷3)兩位符號位判斷溢出)兩位符號位判斷溢出 參加運(yùn)算的兩個(gè)數(shù),均采用雙符號位(變形補(bǔ)碼),如果結(jié)果的兩位符號位不同,則發(fā)生了溢出。A = -0.1011B = -0.0111 A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)+A補(bǔ)補(bǔ)= 11.0101 B補(bǔ)補(bǔ)= 11.1001= 110.1110= 10.1110結(jié)果兩位符號位不同,溢出。結(jié)果兩位符號位不同,溢出。大連理工大學(xué) 軟件學(xué)院 賴曉晨溢出判斷溢出判斷3)兩位符號位判斷溢出)兩位符號位判斷溢出 參加運(yùn)算的兩個(gè)數(shù),均采用雙符號位(變形補(bǔ)碼),如果結(jié)果的兩位符號位不同,則發(fā)生了溢出

51、。A = 0.1011B = 0.0111 A補(bǔ)補(bǔ) + B補(bǔ)補(bǔ)+A補(bǔ)補(bǔ)= 00.1011 B補(bǔ)補(bǔ)= 00.0111= 01.0010結(jié)果兩位符號位不同,本例上溢出,前例下溢出。結(jié)果兩位符號位不同,本例上溢出,前例下溢出。無論是否發(fā)生溢出,雙符號位的高位總代表無論是否發(fā)生溢出,雙符號位的高位總代表真正的符號,如果該位為真正的符號,如果該位為1 1,表示結(jié)果為負(fù),此時(shí),表示結(jié)果為負(fù),此時(shí)稱為下溢,如果該位為稱為下溢,如果該位為0 0,表示結(jié)果為正,此時(shí)稱,表示結(jié)果為正,此時(shí)稱為上溢。為上溢。上述結(jié)論對整數(shù)同樣適用。上述結(jié)論對整數(shù)同樣適用。大連理工大學(xué) 軟件學(xué)院 賴曉晨4、補(bǔ)碼加減法硬件電路、補(bǔ)碼加

52、減法硬件電路V0 A nGAGS 加法器(加法器(n+1)溢出溢出判斷判斷求補(bǔ)控制求補(bǔ)控制 邏邏 輯輯0 X nA、X 均均 n+1 位位用減法標(biāo)記用減法標(biāo)記 GS 控制求補(bǔ)邏輯控制求補(bǔ)邏輯大連理工大學(xué) 軟件學(xué)院 賴曉晨三、乘法運(yùn)算三、乘法運(yùn)算p 定點(diǎn)數(shù)一位乘法定點(diǎn)數(shù)一位乘法 1、定點(diǎn)原碼一位乘法2、定點(diǎn)補(bǔ)碼一位乘法 校正法 布斯法(booth)p 定點(diǎn)數(shù)二位乘法定點(diǎn)數(shù)二位乘法3、定點(diǎn)原碼兩位乘4、定點(diǎn)補(bǔ)碼兩位乘大連理工大學(xué) 軟件學(xué)院 賴曉晨0.1101 0.1011 1101 1101 0000 1101 0.10001111積的符號是乘數(shù)和被乘數(shù)符號位的異或積的符號是乘數(shù)和被乘數(shù)符號位的異

53、或1、定點(diǎn)原碼一位乘、定點(diǎn)原碼一位乘p 手算分析:手算分析:X=0.1101,Y= 0.1011;求;求XY按照乘數(shù)低位構(gòu)造部分積按照乘數(shù)低位構(gòu)造部分積權(quán)值相同位對齊權(quán)值相同位對齊多數(shù)相加多數(shù)相加積倍長積倍長大連理工大學(xué) 軟件學(xué)院 賴曉晨 若X原=X0X1X2Xn ,Y原=Y0Y1Y2Yn 則XY原=X原Y原 =(X0 Y0)(X1X2Xn)(Y1Y2Yn)p 人工算法和機(jī)器算法的異同性人工算法和機(jī)器算法的異同性 多個(gè)部分積相加不能一次完成多個(gè)部分積相加不能一次完成 乘積是乘數(shù)的乘積是乘數(shù)的2 2倍長,加法器需倍長,我們希望仍倍長,加法器需倍長,我們希望仍使用一倍長的加法器。使用一倍長的加法器

54、。 符號位符號位 數(shù)值部分?jǐn)?shù)值部分機(jī)器運(yùn)算分析機(jī)器運(yùn)算分析大連理工大學(xué) 軟件學(xué)院 賴曉晨0.1101 0.1011 1101 1101 0000 1101 0.10001111 右移代替左移。右移代替左移。 部分積相加時(shí)最低位只用了一次,此位將來不再參部分積相加時(shí)最低位只用了一次,此位將來不再參與運(yùn)算,因此可將與運(yùn)算,因此可將部分積寄存器右移一位部分積寄存器右移一位 乘數(shù)的各個(gè)位從右向左均只用一次,最低位不再使乘數(shù)的各個(gè)位從右向左均只用一次,最低位不再使用,因此部分積右移時(shí),用,因此部分積右移時(shí),乘數(shù)寄存器也可右移一位乘數(shù)寄存器也可右移一位,即可用乘數(shù)寄存器的最高位接收部分積移出的位。即可用乘

55、數(shù)寄存器的最高位接收部分積移出的位。被乘數(shù)被乘數(shù)乘數(shù)乘數(shù)部分積部分積部分積部分積 乘數(shù)乘數(shù) 拋棄拋棄大連理工大學(xué) 軟件學(xué)院 賴曉晨乘法總結(jié)乘法總結(jié)p 手算乘法的兩個(gè)要素:手算乘法的兩個(gè)要素: 按照乘數(shù)的低位來確定加被乘數(shù),還是加0。 加的時(shí)候被乘數(shù)要相對部分積左移一位p 導(dǎo)致手算缺點(diǎn):加法器要倍長導(dǎo)致手算缺點(diǎn):加法器要倍長p 分析手算乘法還具備兩個(gè)特點(diǎn):分析手算乘法還具備兩個(gè)特點(diǎn): 乘數(shù)各位,從右到左依次只用一次。 部分積低位只用一次p 結(jié)論:結(jié)論: 每計(jì)算一次部分積乘數(shù)可以右移一位,移出位丟棄,同時(shí)左側(cè)最高位空出 部分積每計(jì)算一次右移一位,等同于被乘數(shù)左移,同時(shí)移出位可以保存在乘數(shù)寄存器的最

56、高位中大連理工大學(xué) 軟件學(xué)院 賴曉晨例例 設(shè)設(shè)X=0.1101,Y=0.1011,求,求XY。0 . 0 0 0 00 . 1 1 0 10 . 1 1 0 10 . 1 1 0 10 . 0 0 0 00 . 1 1 0 1初態(tài),部分積初態(tài),部分積 = 0乘數(shù)為乘數(shù)為 1,加被乘數(shù),加被乘數(shù)乘數(shù)為乘數(shù)為 1,加被乘數(shù),加被乘數(shù)乘數(shù)為乘數(shù)為 0,加,加 01 . 0 0 1 110 . 1 0 0 11 11 . 0 0 0 11 1 1乘數(shù)為乘數(shù)為 1,加,加 被乘數(shù)被乘數(shù)0 . 1 0 0 01 1 1 11,得結(jié)果,符號位,得結(jié)果,符號位01 0 1 1=0 . 0 1 1 01,形成新

57、的部分積,形成新的部分積1 1 0 1=0 . 1 0 0 11,形成新的部分積,形成新的部分積1 1 1 0=0 . 0 1 0 01,形成新的部分積,形成新的部分積1 1 1 1= 部部 分分 積積 乘乘 數(shù)數(shù) 說說 明明大連理工大學(xué) 軟件學(xué)院 賴曉晨例例 設(shè)設(shè)X=0.1101,Y=0.1011,求,求XY。0 . 0 0 0 00 . 1 1 0 10 . 1 1 0 10 . 1 1 0 10 . 0 0 0 00 . 1 1 0 1初態(tài),部分積初態(tài),部分積 = 0乘數(shù)為乘數(shù)為 1,加被乘數(shù),加被乘數(shù)乘數(shù)為乘數(shù)為 1,加被乘數(shù),加被乘數(shù)乘數(shù)為乘數(shù)為 0,加,加 01 . 0 0 1 1

58、10 . 1 0 0 11 11 . 0 0 0 11 1 1乘數(shù)為乘數(shù)為 1,加,加 被乘數(shù)被乘數(shù)0 . 1 0 0 01 1 1 11,得結(jié)果,符號位,得結(jié)果,符號位01 0 1 1=0 . 0 1 1 01,形成新的部分積,形成新的部分積1 1 0 1=0 . 1 0 0 11,形成新的部分積,形成新的部分積1 1 1 0=0 . 0 1 0 01,形成新的部分積,形成新的部分積1 1 1 1= 部部 分分 積積 乘乘 數(shù)數(shù) 說說 明明思考:為什么最后一次加法后還需要一次移位?思考:為什么最后一次加法后還需要一次移位?大連理工大學(xué) 軟件學(xué)院 賴曉晨部分積循環(huán)迭代部分積循環(huán)迭代 z0=0z

59、1=(z0+XYn)2-1z2=(z1+XYn-1)2-1zi+1=(zi+XYn-i)2-1zn=(zn-1+XY1)2-1 移位移位- 相加相加乘法運(yùn)算的控制流程乘法運(yùn)算的控制流程大連理工大學(xué) 軟件學(xué)院 賴曉晨例例 已知已知 x = 0.1110 y = 0.1101 求求x y原原解:解: 0 . 0 0 0 00 . 1 1 1 00 . 1 1 1 00 . 0 0 0 00 . 1 1 1 00 . 1 1 1 0部分積部分積 初態(tài)初態(tài) z0 = 0 部部 分分 積積 乘乘 數(shù)數(shù) 說說 明明0 . 0 1 1 101 . 0 0 0 11 01 . 0 1 1 01 1 00 .

60、1 0 1 10 1 1 01,得得 z4邏輯右移邏輯右移1 1 0 1=0 . 0 1 1 11,得得 z10 1 1 0=0 . 0 0 1 11,得得 z21 0 1 1=0 . 1 0 0 01,得得 z31 1 0 1=邏輯右移邏輯右移邏輯右移邏輯右移邏輯右移邏輯右移+ + + + + x*+ 0+ x*+ x*大連理工大學(xué) 軟件學(xué)院 賴曉晨 數(shù)值部分按絕對值相乘數(shù)值部分按絕對值相乘 乘積的符號位乘積的符號位 x0 y0 = 1 0 = 1x* y* = 0. 1 0 1 1 0 1 1 0則則 x y原原 = 1. 1 0 1 1 0 1 1 0特點(diǎn)特點(diǎn)絕對值運(yùn)算絕對值運(yùn)算邏輯移位

溫馨提示

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

評論

0/150

提交評論