計算機組成原理第六章計算機的運算方法_第1頁
計算機組成原理第六章計算機的運算方法_第2頁
計算機組成原理第六章計算機的運算方法_第3頁
計算機組成原理第六章計算機的運算方法_第4頁
計算機組成原理第六章計算機的運算方法_第5頁
已閱讀5頁,還剩180頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第六章計算機的運算方法6.1無符號數(shù)和有符號數(shù)6.3定點運算6.2數(shù)的定點表示和浮點表示6.4浮點四則運算6.5算術邏輯單元6.6

時序邏輯電路6.6

數(shù)據(jù)校驗碼2一、考試范圍(一)數(shù)制和編碼進位計數(shù)制及其轉換、真值和機器數(shù)、BCD碼、字符和字符串、校驗碼。(二)定點數(shù)的表示和運算1、定點數(shù)的表示(有符號、無符號)2、定點數(shù)的運算移位運算;加減運算(原碼、補碼);乘/除運算;溢出概念和判別方法。3一、考試范圍(三)浮點數(shù)的表示和運算1、浮點數(shù)的表示范圍;IEEE754標準2、浮點數(shù)的加/減運算(單選題)(四)算術邏輯單元ALU1、串行加法器和并行加法器2、算術邏輯單元的功能和結構4二、復習要點

了解進位數(shù)制及其相互轉換、字符(包括漢字)、字符串和BCD數(shù)在計算機中的表示了解校驗碼引入的目的、原理及其應用理解本章的基本概念,如機器數(shù)、真值、最小碼距、并行進位。理解定點數(shù)的表示原理,掌握定點數(shù)的運算、溢出的概念與判別方法,了解陣列乘法器。理解浮點數(shù)的表示,掌握浮點數(shù)的加減運算方法。理解算術邏輯單元相關術語的定義、ALU的基本功能、組成和結構。一、無符號數(shù)寄存器的位數(shù)反映無符號數(shù)的表示范圍8位0~25516位0~655356.1無符號數(shù)和有符號數(shù)帶符號的數(shù)符號數(shù)字化的數(shù)+0.10110

1011小數(shù)點的位置+11000

1100小數(shù)點的位置–11001

1100小數(shù)點的位置–0.10111

1011小數(shù)點的位置真值機器數(shù)1.機器數(shù)與真值二、有符號數(shù)6.1無符號數(shù)和有符號數(shù)2.原碼表示法帶符號的絕對值表示(1)定義整數(shù)x

為真值n

為整數(shù)的位數(shù)如x=+1110[x]原

=0,1110[x]原

=24+1110=1,1110x=

1110[x]原=0,x2n

x

≥02n

x0≥

x

>2n用逗號將符號位和數(shù)值位隔開6.1無符號數(shù)和有符號數(shù)小數(shù)x

為真值如x=+0.1101[x]原

=0.1101x=0.1101[x]原

=1(0.1101)=1.1101x1>

x

≥0[x]原=1–x0≥

x

>1x=0.1000000[x]原

=1(0.1000000)=1.1000000x=

+0.1000000[x]原

=0.1000000用小數(shù)點將符號位和數(shù)值位隔開用小數(shù)點將符號位和數(shù)值位隔開6.1無符號數(shù)和有符號數(shù)(2)舉例例6.1已知[x]原=1.0011求x解:例6.2已知[x]原=1,1100求x解:x=1

[x]原=1

1.0011=0.0011x=24

[x]原=100001,1100=1100–

–0.00111100由定義得由定義得6.1無符號數(shù)和有符號數(shù)例6.4

求x=0的原碼解:設x=+0.0000例6.3已知[x]原=0.1101求x解:∴

x

=+0.1101同理,對于整數(shù)[+0]原=0,0000[+0.0000]原=0.0000x=

0.0000[0.0000]原=1.0000[0]原=1,0000∴[+

0]原

[

0]原

根據(jù)定義∵[x]原=0.11016.1無符號數(shù)和有符號數(shù)但是用原碼做加法時,會出現(xiàn)如下問題:能否只做加法?

找到一個與負數(shù)等價的正數(shù)來代替這個負數(shù)就可使減加加法正正加加法正負加法負正加法負負減減加

要求

數(shù)1數(shù)2

實際操作結果符號正可正可負可正可負負6.1無符號數(shù)和有符號數(shù)(1)補的概念時鐘逆時針-363順時針+9615-1233.補碼表示法可見3可用+9代替記作3≡+9(mod12)同理4≡+8(mod12)5≡+7(mod12)

時鐘以

12為模減法加法稱+9是–3以12為模的補數(shù)6.1無符號數(shù)和有符號數(shù)結論一個負數(shù)加上“模”即得該負數(shù)的補數(shù)兩個互為補數(shù)的數(shù)它們絕對值之和即為模數(shù)計數(shù)器(模16)–101110110000+010110111000010110000?可見1011可用+0101代替記作1011≡+0101(mod24)同理011≡+101(mod23)0.1001≡+1.0111(mod2)自然去掉6.1無符號數(shù)和有符號數(shù)+

0101(mod24)≡1011(mod24)(2)正數(shù)的補數(shù)即為其本身+10000+10000兩個互為補數(shù)的數(shù)+0101+10101≡分別加上模結果仍互為補數(shù)∴+0101≡+0101+010124+1–10111,0101用逗號將符號位和數(shù)值位隔開丟掉10110,1,??1011(mod24)可見?+01010101010110110101+(mod24+1)100000=6.1無符號數(shù)和有符號數(shù)(3)補碼定義整數(shù)x

為真值n

為整數(shù)的位數(shù)[x]補=0,x2n

x

≥02n+1+x0

x

≥2n(mod2n+1)如x=+1010[x]補=27+1+(1011000)=1000000001011000[x]補=0,1010x=10110001,0101000用逗號將符號位和數(shù)值位隔開6.1無符號數(shù)和有符號數(shù)小數(shù)x

為真值x=+0.1110[x]補=x1>

x

≥02+

x

0>

x

≥1(mod2)如[x]補=0.1110x=0.11000001.0100000[x]補=2+(0.1100000)=10.00000000.1100000用小數(shù)點將符號位和數(shù)值位隔開6.1無符號數(shù)和有符號數(shù)(4)求補碼的快捷方式=100000=1,011010101+1=1,0110又[x]原=1,1010則[x]補=24+11010=11111+11010=1111110101010當真值為負時,補碼可用原碼除符號位外每位取反,末位加1求得+1設x=1010時6.1無符號數(shù)和有符號數(shù)(5)舉例解:x=+0.0001解:由定義得x=[x]補–2=1.0001–10.0000[x]原=1.1111例6.6已知[x]補=1.0001求x[x]補

[x]原

?由定義得例6.5已知[x]補=0.0001求x∴x=0.1111

–=0.1111

–6.1無符號數(shù)和有符號數(shù)例6.7解:x=[x]補–24+1

=1,1110–100000[x]原=1,0010當真值為負時,原碼可用補碼除符號位外每位取反,末位加1求得[x]補

[x]原

?∴x=0010=0010求x已知[x]補=1,1110由定義得6.1無符號數(shù)和有符號數(shù)真值0,10001101,01110100.11101.00100.00000.00001.00000,10001101,10001100.11101.11100.00001.0000不能表示練習求下列真值的補碼x=+70x=0.1110x=0.0000x=–70x=0.1110x=0.0000x=1.0000[1]補=2+x=10.00001.0000=1.0000[+0]補=[0]補由小數(shù)補碼定義[x]補=x1>

x

≥02+

x0>

x

–1(mod2)=1000110=–1000110[x]補[x]原6.1無符號數(shù)和有符號數(shù)4.反碼表示法(1)定義整數(shù)[x]反=0,x2n>x≥0(2n+1–1)+x0≥x>2n(mod2n+1

1)如x

=+1101[x]反=0,1101=1,0010x=1101[x]反=(24+11)1101=111111101用逗號將符號位和數(shù)值位隔開x

為真值n

為整數(shù)的位數(shù)6.1無符號數(shù)和有符號數(shù)小數(shù)x=+0.1101[x]反=0.1101x=0.1010[x]反=(22-4)0.1010=1.11110.1010=1.0101如[x]反=x1>x≥0(2–2-n)+x0≥x>1(mod22-n)用小數(shù)點將符號位和數(shù)值位隔開x

為真值6.1無符號數(shù)和有符號數(shù)(2)舉例例6.10

求0的反碼設x=+0.0000x=–0.0000[+0.0000]反=0.0000[–

0.0000]反=1.1111∴[+0]反≠[–0]反

解:同理,對于整數(shù)[+0]反=0,0000[–0]反=1,1111例6.9已知[x]反=1,1110求x由定義得x=[x]反–(24+1–1)=1,1110–11111=–0001例6.8已知[x]反=0,1110求x解:由定義得x=+1110解:6.1無符號數(shù)和有符號數(shù)三種機器數(shù)的小結

對于正數(shù),原碼=補碼=反碼

對于負數(shù),符號位為1,其數(shù)值部分原碼除符號位外每位取反末位加1

補碼原碼除符號位外每位取反反碼最高位為符號位,書寫上用“,”(整數(shù))或“.”(小數(shù))將數(shù)值部分和符號位隔開6.1無符號數(shù)和有符號數(shù)例6.11000000000000000100000010…011111111000000010000001111111011111111011111111…128129-0-1-128-127-127-126二進制代碼無符號數(shù)對應的真值原碼對應的真值補碼對應的真值反碼對應的真值012127…253254255…-125-126-127…-3-2-1…-2-1-0…+0+1+2+127…+0+1+2+127…+0+1+2+127…+0

設機器數(shù)字長為8位(其中一位為符號位)對于整數(shù),當其分別代表無符號數(shù)、原碼、補碼和反碼時,對應的真值范圍各為多少?6.1無符號數(shù)和有符號數(shù)例6.12解:已知[y]補求[y]補<Ⅰ>[y]補=0.y1y2

yn…y

=0.

y1y2

yn…y=0.y1

y2

yn…[y]補=1.y1

y2

yn+2-n…<Ⅱ>[y]補=1.y1

y2

yn…[y]原=1.y1y2

yn+2-n…

y=(0.y1y2

yn

+2-n)…

y=0.y1y2

yn+2-n……[y]補=0.y1

y2

yn+2-n設[y]補=y0.y1y2

yn…每位取反,即得[y]補[y]補連同符號位在內,末位加1每位取反,即得[y]補[y]補連同符號位在內,末位加16.1無符號數(shù)和有符號數(shù)5.移碼表示法補碼表示很難直接判斷其真值大小如十進制x=+21x=–21x=

+31x=–31x+25+10101+100000+11111+10000010101+10000011111+100000大大錯錯大大正確正確0,101011,010110,111111,00001+10101–

10101+11111–

11111=110101=001011=111111=000001二進制補碼6.1無符號數(shù)和有符號數(shù)(1)移碼定義x

為真值,n

為整數(shù)的位數(shù)移碼在數(shù)軸上的表示[x]移碼2n+1–12n2n

–1–2n00真值如x=10100[x]移=25+10100用逗號將符號位和數(shù)值位隔開x=–10100[x]移=25

–10100[x]移=2n+x(2n>x≥2n)=1,10100=0,011006.1無符號數(shù)和有符號數(shù)(2)移碼和補碼的比較設x=+1100100[x]移=27+1100100[x]補=0,1100100設x=–1100100[x]移=27

–1100100[x]補=1,0011100補碼與移碼只差一個符號位=1,1100100=0,001110010016.1無符號數(shù)和有符號數(shù)-100000-11111-11110-00001±00000+00001+00010+11110+11111……真值x(n

=

5)[x]補[x]移[x]移對應的十進制整數(shù)(3)真值、補碼和移碼的對照表……012313233346263……000000000010000001011111100000100001100010111110111111……011111011110000010000001000000111111100010100001100000-100000±00000+111110000001111110000001000006.1無符號數(shù)和有符號數(shù)

當x=0時[+0]移=25+0[–0]移=25

–0∴[+0]移=[–0]移

當n=5時最小的真值為–25[–100000]移可見,最小真值的移碼為全0(4)移碼的特點用移碼表示浮點數(shù)的階碼能方便地判斷浮點數(shù)的階碼大小=1,00000=1,00000=–100000=000000=25–1000006.1無符號數(shù)和有符號數(shù)小數(shù)點按約定方式標出一、定點表示Sf

S1S2

Sn…數(shù)符數(shù)值部分小數(shù)點位置Sf

S1S2

Sn…數(shù)符數(shù)值部分小數(shù)點位置或定點機小數(shù)定點機整數(shù)定點機原碼補碼反碼–(1–2-n)~+(1–2-n)–(2n

–1)~+(2n

–1)–1~+(1–2-n)–2n~+(2n

–1)–(1–2-n)~+(1–2-n)–(2n

1)~+(2n

–1)6.2數(shù)的定點表示和浮點表示二、浮點表示N=S×rj浮點數(shù)的一般形式S

尾數(shù)j

階碼r

基數(shù)(基值)計算機中r

取2、4、8、16等當r=2N=11.0101=0.110101×210=1.10101×21=1101.01×2-10

=0.00110101×2100

計算機中S

小數(shù)、可正可負j

整數(shù)、可正可負

規(guī)格化數(shù)二進制表示6.2數(shù)的定點表示和浮點表示1.浮點數(shù)的表示形式jf

j1

j2

jm

Sf

S1S2

Sn

……j

階碼S

尾數(shù)階符數(shù)符階碼的數(shù)值部分尾數(shù)的數(shù)值部分Sf

代表浮點數(shù)的符號n

其位數(shù)反映浮點數(shù)的精度m

其位數(shù)反映浮點數(shù)的表示范圍jf

和m

共同表示小數(shù)點的實際位置6.2數(shù)的定點表示和浮點表示2.浮點數(shù)的表示范圍–2(2m–1)×(1

2–n)–2–(2m–1)×2–n2(2m–1)×(1

2–n)2–(2m–1)×2–n最小負數(shù)最大負數(shù)最大正數(shù)最小正數(shù)負數(shù)區(qū)正數(shù)區(qū)下溢0上溢上溢–215

×(1

2-10)

–2-15

×2-10

2-15

×2-10

215

×(1

2-10)

設m=4

n=10上溢階碼>最大階瑪下溢階碼<最小階碼按機器零處理6.2數(shù)的定點表示和浮點表示練習

設機器數(shù)字長為24位,欲表示±3萬的十進制數(shù),試問在保證數(shù)的最大精度的前提下,除階符、數(shù)符各取1位外,階碼、尾數(shù)各取幾位?滿足最大精度可取

m=4,n=18解:215×0.×××…

…××15位…m=4、5、615位二進制數(shù)可反映±3萬之間的十進制數(shù)∴215

=32768214

=16384∵6.2數(shù)的定點表示和浮點表示3.浮點數(shù)的規(guī)格化形式r=2尾數(shù)最高位為1r=4尾數(shù)最高2位不全為0r=8尾數(shù)最高3位不全為04.浮點數(shù)的規(guī)格化基數(shù)不同,浮點數(shù)的規(guī)格化形式不同r=2左規(guī)尾數(shù)左移1位,階碼減1右規(guī)尾數(shù)右移1位,階碼加1r=4左規(guī)尾數(shù)左移2位,階碼減1右規(guī)尾數(shù)右移2位,階碼加1r=8左規(guī)尾數(shù)左移3位,階碼減1右規(guī)尾數(shù)右移3位,階碼加1基數(shù)r

越大,可表示的浮點數(shù)的范圍越大基數(shù)r

越大,浮點數(shù)的精度降低6.2數(shù)的定點表示和浮點表示例如:最大正數(shù)=215×(1–2–10)

2+1111×0.111111111110個1最小正數(shù)最大負數(shù)最小負數(shù)=2–15×2–1

=–215×(1–2–10)=2–16=–2–15×2–1

=–2–162-1111×0.10000000009個02-1111×(–0.1000000000)9個02+1111×(–0.1111111111)10個1設m=4,n=10尾數(shù)規(guī)格化后的浮點數(shù)表示范圍6.2數(shù)的定點表示和浮點表示例6.13將+寫成二進制定點數(shù)、浮點數(shù)及在定點機和浮點機中的機器數(shù)形式。其中數(shù)值部分均取10位,數(shù)符取1位,浮點數(shù)階碼取5位(含1位階符)。19128解:設

x=+19128二進制形式定點表示浮點規(guī)格化形式[x]原=1,0010;0.1001100000[x]補=1,1110;0.1001100000[x]反=1,1101;0.1001100000定點機中浮點機中000x=0.0010011x=0.0010011x=0.1001100000×2-10[x]原=[x]補=[x]反=0.00100110006.2數(shù)的定點表示和浮點表示x=–1110100000例6.14將–58表示成二進制定點數(shù)和浮點數(shù),并寫出它在定點機和浮點機中的三種機器數(shù)及階碼為移碼,尾數(shù)為補碼的形式(其他要求同上例)。解:設

x=–58二進制形式定點表示浮點規(guī)格化形式[x]原=1,0000111010[x]補=1,1111000110[x]反=1,1111000101[x]原=0,0110;1.1110100000[x]補=0,0110;1.0001100000[x]反=0,0110;1.0001011111定點機中浮點機中[x]階移、尾補=1,0110;1.0001100000x=–111010x=–(0.1110100000)×21106.2數(shù)的定點表示和浮點表示例6.15

寫出對應下圖所示的浮點數(shù)的補碼形式。設n=10,m=4,階符、數(shù)符各取1位。負數(shù)區(qū)正數(shù)區(qū)下溢0上溢上溢–2(2m–1)×(1

2–n)2(2m–1)×(1

2–n)2–(2m–1)×2–n最小負數(shù)最大正數(shù)最小正數(shù)–2–(2m–1)×2–n最大負數(shù)解:真值最大正數(shù)最小正數(shù)最大負數(shù)最小負數(shù)215×(1

2–10)2–15×2–10–2–15×2–10–215×(1

2–10)0,1111;0.11111111111,0001;0.00000000011,0001;1.11111111110,1111;1.0000000001補碼6.2數(shù)的定點表示和浮點表示

當浮點數(shù)尾數(shù)為0時,不論其階碼為何值

按機器零處理機器零

當浮點數(shù)階碼等于或小于它所表示的最小數(shù)時,不論尾數(shù)為何值,按機器零處理如m=4n=10當階碼用移碼,尾數(shù)用補碼表示時,機器零為0,0000;0.000……

1,0000;×.×××……×,××××;0.000……有利于機器中“判0”電路的實現(xiàn)當階碼和尾數(shù)都用補碼表示時,機器零為(階碼=16)6.2數(shù)的定點表示和浮點表示四、IEEE754標準短實數(shù)長實數(shù)臨時實數(shù)符號位S

階碼尾數(shù)總位數(shù)1

8233211152641156480S

階碼(含階符)尾數(shù)數(shù)符小數(shù)點位置尾數(shù)為規(guī)格化原碼表示,階碼用移碼表示非“0”的有效位最高位為“1”(隱含)6.2數(shù)的定點表示和浮點表示6.2數(shù)的定點表示和浮點表示①浮點數(shù)尾數(shù)不為0時的最高位稱隱藏位,在寫入內存或磁盤時,此位不保存,可左移尾數(shù)隱藏掉,這種處理技術稱隱藏位技術,目的多保存一個二進制位隱藏位與隱藏技術②為了保持浮點數(shù)的值不變,還要把原來的階碼值減1.③對臨時浮點數(shù)不使用隱藏位技術短浮點數(shù)規(guī)格化實際值:(-1)s×1.M×2e-127E的取值為1~2546.3定點運算一、移位運算1.移位的意義15米=1500厘米小數(shù)點右移2位機器用語15相對于小數(shù)點左移2位(小數(shù)點不動)..左移絕對值擴大右移絕對值縮小在計算機中,移位與加減配合,能夠實現(xiàn)乘除運算2.算術移位規(guī)則1右移添1左移添00反碼補碼原碼負數(shù)0原碼、補碼、反碼正數(shù)添補代碼碼制符號位不變6.3定點運算例6.16設機器數(shù)字長為8位(含一位符號位),寫出A=+26時,三種機器數(shù)左、右移一位和兩位后的表示形式及對應的真值,并分析結果的正確性。解:A=+26則[A]原=[A]補=[A]反=0,0011010+

60,0000110+130,0001101+1040,1101000+

520,0110100+260,0011010移位前[A]原=[A]補=[A]反對應的真值機器數(shù)移位操作1212=+110106.3定點運算例6.17設機器數(shù)字長為8位(含一位符號位),寫出A=–26時,三種機器數(shù)左、右移一位和兩位后的表示形式及對應的真值,并分析結果的正確性。解:A=–26–61,0000110–131,0001101–1041,1101000–521,0110100–261,0011010移位前對應的真值機器數(shù)移位操作1212原碼=–110106.3定點運算–61,1111001–131,1110010–1041,0010111–521,1001011–261,1100101移位前對應的真值機器數(shù)移位操作1212–71,1111001–131,1110011–1041,0011000–521,1001100–261,1100110移位前對應的真值機器數(shù)移位操作1212補碼反碼6.3定點運算3.算術移位的硬件實現(xiàn)(a)真值為正(b)負數(shù)的原碼(c)負數(shù)的補碼(d)負數(shù)的反碼000100丟1丟1出錯影響精度出錯影響精度正確影響精度正確正確6.3定點運算4.算術移位和邏輯移位的區(qū)別算術移位有符號數(shù)的移位邏輯左移邏輯右移低位添0,高位移丟高位添0,低位移丟例如01010011邏輯左移10100110邏輯右移01011001算術左移算術右移0010011011011001(補碼)高位1移丟010100110Cy010100110010110010邏輯移位無符號數(shù)的移位6.3定點運算二、加減法運算1.補碼加減運算公式(1)加法(2)減法整數(shù)[A]補+[B]補=[A+B]補(mod2n+1)小數(shù)[A]補+[B]補=[A+B]補(mod2)A–B=A+(–B)整數(shù)[A

–B]補=[A+(–B)]補=[A]補+[

B]補(mod2n+1)小數(shù)[A

–B]補=[A+(–B)]補(mod2)連同符號位一起相加,符號位產生的進位自然丟掉=[A]補+[

B]補6.3定點運算2.舉例解:[A]補[B]補[A]補+[B]補+=0.1011=1.1011=10.0110=[A+B]補驗證例6.18設A=0.1011,B=–0.0101求[A+B]補0.1011–0.01010.0110∴A+B

=0.0110[A]補[B]補[A]補+[B]補+=1,0111=1,1011=11,0010=[A+B]補驗證–1001–1110–0101+例6.19設A=–9,B=–5求[A+B]補解:∴A+B

=–11106.3定點運算例6.20設機器數(shù)字長為8位(含1位符號位)且A=15,B=24,用補碼求A

–B解:A=15=0001111B=24=0011000[A]補+[–

B]補+[A]補=0,0001111[–

B]補=1,1101000=1,1110111=[A

B]補[B]補=0,0011000練習1設x=y=用補碼求x+y9161116x+y=–0.1100=1216–∴A

–B=–1001=–9錯6.3定點運算3.溢出判斷(1)對于無符號數(shù)6.3定點運算C=1,則必溢出,C=0,則不溢出。(2)對于帶符號數(shù)1>雙進位判斷法X7X6X5X4X3X2X1X0+Y7Y6Y5Y4Y3Y2Y1Y0C7C6

2>雙符號判斷法變型補碼:雙符號位的補碼6.3定點運算變型補碼求法:在補碼的前邊再添上一個相同的符號值。例如:[x]補=11111111B,則[x]變補=11111111B對八位機,f7f6(符號位),若運算后,

f7f6=00或11,不溢出01,上溢10,下溢例:已知x=-63,y=-2,[x-y]補=?判斷溢出?解:[-63]變補=11000001B+[-2]變補=11111110B10111111B下溢4.補碼加減法的硬件配置V0

A

nGAGS

加法器(n+1)溢出判斷求補控制邏輯0

X

nA、X均n+1位用減法標記GS

控制求補邏輯6.3定點運算三、乘法運算1.分析筆算乘法A=–0.1101B=0.1011A×B=–0.100011110.11010.101111011101000011010.10001111符號位單獨處理乘數(shù)的某一位決定是否加被乘數(shù)4個位積一起相加乘積的位數(shù)擴大一倍×乘積的符號心算求得

?6.3定點運算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.01[0?

A+0.1(A+0.1A)]=0.1{A+0.1[0?

A+0.1(A+0.1A)]}=2-1{A

+2-1[0?

A+2-1(A

+

2-1(A+0))]}①②⑧第一步被乘數(shù)A

+0第二步1,得新的部分積第八步1,得結果③第三步部分積

+

被乘數(shù)…右移一位6.3定點運算3.改進后的筆算乘法過程(豎式)0.00000.11010.11010.11010.00000.1101初態(tài),部分積=0乘數(shù)為1,加被乘數(shù)乘數(shù)為1,加被乘數(shù)乘數(shù)為0,加01.001110.1001111.0001111乘數(shù)為1,加被乘數(shù)0.100011111,得結果1011=0.01101,形成新的部分積1101=0.10011,形成新的部分積1110=0.01001,形成新的部分積1111=部分積乘數(shù)說明6.3定點運算小結被乘數(shù)只與部分積的高位相加

由乘數(shù)的末位決定被乘數(shù)是否與原部分積相加,然后1形成新的部分積,同時乘數(shù)

1(末位移丟),空出高位存放部分積的低位。硬件3個寄存器,具有移位功能一個全加器乘法運算加和移位。n=4,加4次,移4次6.3定點運算4.原碼乘法(1)原碼一位乘運算規(guī)則以小數(shù)為例設[x]原=x0.x1x2

xn…[y]原=y0.y1y2

yn…=(x0

y0).x*y*[x

?y]原=(x0

y0).(0.x1x2

xn)(0.y1y2

yn)……式中x*=0.x1x2

xn

為x

的絕對值…y*=0.y1y2

yn

為y

的絕對值…乘積的符號位單獨處理x0

y0數(shù)值部分為絕對值相乘x*?

y*6.3定點運算(2)原碼一位乘遞推公式x*?

y*=x*(0.y1y2

yn)…=x*(y12-1+y22-2++yn2-n)…=2-1(y1x*+2-1(y2x*+2-1(ynx*+0)))……z1znz0=0z1=2-1(ynx*+z0)z2=2-1(yn-1x*+z1)zn=2-1(y1x*+zn-1)………z06.3定點運算例6.21已知x=–0.1110y=0.1101求[x?y]原解:0.00000.11100.00000.11100.1110部分積初態(tài)z0=0部分積乘數(shù)說明0.011101.0001101.01101100.101101101,得z4邏輯右移邏輯右移1101=0.01111,得z10110=0.00111,得z21011=0.10001,得z31101=6.3定點運算②數(shù)值部分按絕對值相乘①乘積的符號位

x0

y0=10=1x*?

y*=0.10110110則[x

?

y]原

=1.10110110特點絕對值運算邏輯移位例6.21結果用移位的次數(shù)判斷乘法是否結束6.3定點運算(3)原碼一位乘的硬件配置A、X、Q均n+1位移位和加受末位乘數(shù)控制0

An加法器控制門0

Xn

移位和加控制計數(shù)器CSGM0Qn右移6.3定點運算(4)原碼兩位乘原碼乘符號位和數(shù)值位部分分開運算兩位乘每次用乘數(shù)的2位判斷原部分積是否加和如何加被乘數(shù)11100100新的部分積乘數(shù)yn-1

yn加“0”2加1倍的被乘數(shù)2加2倍的被乘數(shù)2加3倍的被乘數(shù)23?先減1倍的被乘數(shù)再加4倍的被乘數(shù)4–13100–01116.3定點運算(5)原碼兩位乘運算規(guī)則111110101100011010001000操作內容標志位Cj乘數(shù)判斷位yn-1yn

z2,y*2,Cj

保持“0”

z2,y*2,Cj

保持“1”z–x*2,y*2,Cj

保持“1”

z+2x*2,y*2,Cj

保持“0”z+x*2,y*2,Cj

保持“0”共有操作+x*+2x*–x*2實際操作

+[x*]補+[2x*]補+[–x*]補

2補碼移

z–x*2,y*2,置“1”Cjz+2x*2,y*2,置“0”Cj

z+x*2,y*2,置“0”Cj6.3定點運算例6.22已知x=0.111111y=–0.111001求[x·y]原000.000000000.111111000.11111100.1110010初態(tài)

z0=0+x*,Cj=0010.00110111000.111000000111111.1001000111001.111110+2x*,Cj=0111.000001–x*,Cj=1000.111111+x*,Cj=00000.001111110011

1020000.100011011100

1121111.111001000111002Cj部分積乘數(shù)說明補碼右移補碼右移解:6.3定點運算②數(shù)值部分的運算①乘積的符號位

x0

y0=01=1x*?

y*=0.111000000111則[x

?

y]原=1.111000000111例6.22結果特點絕對值的補碼運算算術移位用移位的次數(shù)判斷乘法是否結束6.3定點運算(6)原碼兩位乘和原碼一位乘比較符號位操作數(shù)移位移位次數(shù)最多加法次數(shù)x0

y0x0

y0絕對值絕對值的補碼邏輯右移算術右移nnn2(n為偶數(shù))n2+1(n為偶數(shù))思考

n

為奇數(shù)時,原碼兩位乘移?次最多加?次原碼一位乘原碼兩位乘6.3定點運算5.補碼乘法設被乘數(shù)乘數(shù)[x]補=x0.x1x2

xn…[y]補=y0.y1y2

yn…①被乘數(shù)任意,乘數(shù)為正同原碼乘但加和移位按補碼規(guī)則運算乘積的符號自然形成②被乘數(shù)任意,乘數(shù)為負乘數(shù)[y]補,去掉符號位,操作同①

最后加[–x]補,校正(1)補碼一位乘運算規(guī)則以小數(shù)為例6.3定點運算③Booth算法(被乘數(shù)、乘數(shù)符號任意)設[x]補=x0.x1x2

xn[y]補=y0.y1y2

yn……[x

·y]補=[x]補(0.y1

yn)–[x]補·y0…=[x]補(y12-1+y22-2++yn2-n)–[x]補·y0…=[x]補(–y0+y1

2-1+y22-2++yn2-n)…=[x]補[–y0+(y1–

y12-1)+(y22-1–y22-2)++(yn2-(n-1)–yn2-n)]…=[x]補[(y1–y0)+(y2–y1)2-1++(yn–yn-1)2-(n-1)+(0

–yn)2-n)]…y12-1++…yn

2-n–[x]補=+[–x]補

2-1=20

–2-12-2=2-1

–2-22-12-2=[x]補[(y1–y0)+(y2–y1)2-1++(yn+1–yn)2-n]…附加位

yn+16.3定點運算④Booth算法遞推公式[z0]補=0[z1]補=2-1{(yn+1–yn)[x]補+[z0]補}yn+1=0[zn]補=2-1{(y2–y1)[x]補+[zn-1]補}…[x

·

y]補=[zn]補+(y1–y0)[x]補最后一步不移位如何實現(xiàn)

yi+1–yi

?000110111+[x]補

1+[–x]補

11yi

yi+1操作yi+1–yi01-106.3定點運算例6.23已知x=+0.0011y=–0.1011求[x·y]補解:00.000011.110111.110100.001111.110100.001111.11011.0101000.0001111.11011100.000111111.11011111[x]補=0.0011[y]補=1.0101[–x]補=1.1101+[–x]補11.111011010

11+[x]補00.00001110101+[–x]補11.1110111101100.00001111101+[–x]補+[x]補∴

[x·y]補=1.11011111最后一步不移位6.3定點運算(2)Booth算法的硬件配置A、X、Q均n+2位移位和加受末兩位乘數(shù)控制0An+1n+2位加法器控制門0Xn+10Qn

n+1移位和加控制邏輯計數(shù)器CGM00,110110右移6.3定點運算乘法小結原碼乘符號位單獨處理補碼乘符號位自然形成原碼乘去掉符號位運算即為無符號數(shù)乘法不同的乘法運算需有不同的硬件支持整數(shù)乘法與小數(shù)乘法完全相同可用逗號代替小數(shù)點6.3定點運算四、除法運算1.分析筆算除法x=–0.1011y=0.1101求x÷y0.10110.1101⌒0.011010.010010.0011010.0001010.000011010.000001111商符單獨處理心算上商余數(shù)不動低位補“0”減右移一位的除數(shù)上商位置不固定x÷y=–0.1101余數(shù)–0.00000111商符心算求得00.101000

???6.3定點運算2.筆算除法和機器除法的比較筆算除法機器除法商符單獨處理心算上商符號位異或形成|x|–|y|>0上商1|x|–|y|<0上商0余數(shù)不動低位補“0”減右移一位的除數(shù)2倍字長加法器上商位置不固定余數(shù)左移一位低位補“0”減除數(shù)1倍字長加法器在寄存器最末位上商6.3定點運算3.原碼除法以小數(shù)為例[x0]原=x0.x1x2

xn…[y0]原=y0.y1y2

yn…式中x*=0.x1x2

xn

為x

的絕對值

y*=0.y1y2

yn

為y

的絕對值……數(shù)值部分為絕對值相除x*y*被除數(shù)不等于0除數(shù)不能為0小數(shù)定點除法x*<y*商的符號位單獨處理

x0

y0[]原=(x0

y0).xyx*y*約定6.3定點運算(1)恢復余數(shù)法0.10111.00111.00111.00110.0000+[–y*]補01.1110余數(shù)為負,上商00.1101恢復余數(shù)00.1001余數(shù)為正,上商1+[–y*]補1.0110011.0010011+[–y*]補解:被除數(shù)(余數(shù))商說明[x]原=1.1011[y]原

=1.1101①x0

y0=1

1=0②x=–0.1011

y=–0.1101求[]原

xy例6.2410.1011恢復后的余數(shù)0+[y*]補[y*]補=0.1101[–y*]補

=1.0011邏輯左移邏輯左移6.3定點運算0.010101余數(shù)為正,上商1被除數(shù)(余數(shù))商說明1.00110.11011.001110.1010011+[–y*]補1.1101011

余數(shù)為負,上商0恢復余數(shù)1.010001101+[–y*]補0.01110110

余數(shù)為正,上商1=0.1101x*y*∴[]原xy=0.1101上商5次第一次上商判溢出余數(shù)為正上商1余數(shù)為負上商0,恢復余數(shù)移4次100.1010恢復后的余數(shù)011

01+[y*]補邏輯左移6.3定點運算(2)不恢復余數(shù)法余數(shù)Ri>0上商“1”,2Ri

–y*余數(shù)Ri<0上商“0”,

Ri

+y*恢復余數(shù)2(Ri+y*)–y*=2Ri

+y*加減交替恢復余數(shù)法運算規(guī)則不恢復余數(shù)法運算規(guī)則上商“1”2Ri–y*

上商“0”2Ri+y*(加減交替法)6.3定點運算x=–0.1011y=–0.1101求[]原xy解:例6.250.10111.00110.11011.00111.00110.11010.0000+[–y*]補01.1110余數(shù)為負,上商01.110001+[y*]補00.1001余數(shù)為正,上商1+[–y*]補1.0010011+[–y*]補+[y*]補0.101001111.1010011010.010101余數(shù)為正,上商10.01110110余數(shù)為正,上商11.1101011余數(shù)為負,上商0[x]原=1.1011[y*]補=0.1101[–y*]補=1.0011[y]原=1.11011101邏輯左移6.3定點運算①x0

y0=1

1=0②x*y*=0.1101∴=0.1101[]原xy上商n+1次例6.25結果特點用移位的次數(shù)判斷除法是否結束第一次上商判溢出移n

次,加n+1次6.3定點運算(3)原碼加減交替除法硬件配置A、X、Q均n

+1位用Qn控制加減交替

0

A

nn+1位加法器控制門0

X

n0Q

n

計數(shù)器CGD加減移位和加控制邏輯SV左移6.3定點運算[Ri]補=0.1000[x]補=1.1101[y]補=1.01014.補碼除法(1)商值的確定x=0.1011y=0.0011[x]補=0.1011[y]補=0.0011[x]補=0.1011[–y]補=1.1101[Ri]補=0.1000x=–0.0011y=–0.1011[x]補=1.1101[–y]補=0.1011x*>y*[Ri]補與[y]補同號“夠減”x*<y*[Ri]補與[y]補異號“不夠減”++①比較被除數(shù)和除數(shù)絕對值的大小x

與y

同號6.3定點運算[x]補和[y]補求

[Ri]補[Ri]補與[y]補同號異號[x]補–[y]補[x]補+[y]補同號,“夠減”異號,“夠減”小結x=0.1011y=–0.0011[x]補=0.1011[y]補=1.1101[x]補=0.1011[y]補=1.1101[Ri]補=0.1000x=–0.0011y=0.1011[x]補=1.1101[y]補=0.1011[x]補=1.1101[y]補=0.1011[Ri]補=0.1000x*>y*[Ri]補與[y]補異號“夠減”x*<y*[Ri]補與[y]補同號“不夠減”++x

與y

異號6.3定點運算②商值的確定末位恒置“1”法[x]補與[y]補同號正商按原碼上商“夠減”上“1”“不夠減”上“0”[x]補與[y]補異號負商按反碼上商“夠減”上“0”“不夠減”上“1”[Ri]補與[y]補商值同號異號100.原碼1×.××××

11.反碼1×.××××

1[x]補與[y]補商[Ri]補與[y]補商值夠減不夠減夠減不夠減同號異號正負1001原碼上商反碼上商小結簡化為(同號)(異號)(異號)(同號)6.3定點運算(2)商符的形成除法過程中自然形成[x]補和[y]補同號[x]補–[y]補比較[Ri]補和[y]補同號

溫馨提示

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

評論

0/150

提交評論