




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第三章 運算方法和運算部件不同層次程序員看到的運算及ALU定點數運算及其運算部件浮點數運算及其運算部件3.1 高級語言和機器指令中的運算C語言程序中涉及的運算整數算術運算、浮點數算術運算按位、邏輯、移位、位擴展和位截斷指令集中與運算相關的指令( 以MIPS為參考 )涉及到的定點數運算算術運算帶符號整數運算:取負 / 符號擴展 / 加 / 減 / 乘 / 除 / 算術移位無符號整數運算:0擴展 / 加 / 減 / 乘 / 除 邏輯運算邏輯操作:與 / 或 / 非 / 移位操作:邏輯左移 / 邏輯右移涉及到的浮點數運算:加、減、乘、除一、移位運算1. 移位的意義15 米 = 1500 厘米 小數點
2、右移 2 位機器用語15 相對于小數點 左移 2 位( 小數點不動 ).左移 絕對值擴大右移 絕對值縮小在計算機中,移位與加減配合,能夠實現乘除運算2. 算術移位規則1右移 添 1左移 添 00反 碼補 碼原 碼負數0原碼、補碼、反碼正數添補代碼碼 制符號位不變例3.1 設機器數字長為 8 位(含一位符號位),寫出A = 26時,三種機器數左、右移一位和兩位后的表示形式及對應的真值,并分析結果的正確性。解:A = 26 61,0000110 131,0001101 1041,1101000 521,0110100 261,0011010移位前對應的真值機 器 數移位操作1212原碼= 1101
3、0 61,1111001 131,1110010 1041,0010111 521,1001011 261,1100101移位前對應的真值機 器 數移位操作1212 71,1111001 131,1110011 1041,0011000 521,1001100 261,1100110移位前對應的真值機 器 數移位操作1212補碼反碼3. 算術移位的硬件實現(a)真值為正 (b)負數的原碼(c)負數的補碼(d)負數的反碼000100丟 1丟 1出錯影響精度出錯影響精度正確影響精度正確正確4. 算術移位和邏輯移位的區別算術移位有符號數的移位邏輯移位無符號數的移位邏輯左移邏輯右移低位添 0,高位移丟
4、高位添 0,低位移丟例如 11010011邏輯左移10100110邏輯右移01011001算術左移算術右移1010011011011001(補碼)00101100103.2 基本運算部件一、ALU 電路組合邏輯電路 Ki 不同取值 Fi 不同四位 ALU 74181M = 0 算術運算M = 1 邏輯運算S3 S0 不同取值,可做不同運算ALUAiBiFiKi1 基本的二進制加法器一位加法電路 一位半加器(不考慮進位) 一位全加器(考慮進位) Ci=XiYi + (Xi+Yi )Ci-1Fi=XiYiXiYiHAFi=XiYi Ci-1Ci-1XiYiCiFA=Gi + PiCi-1Gi=Xi
5、Yi進位產生函數Pi= Xi+Yi進位傳遞函數2串行進位加法器 C3F0C-1X0Y0FAF1C0X1Y1FAF2C1X2Y2FAF3C2X3Y3FA進位信號串行傳送速度慢 C0 = G0 + P0C-1 C1 = G1 + P1C0C2 = G2 + P2C1C3 = G3 + P3C2= G0 P0C-1設與非門的級延遲時間為ty 4 位 全加器產生進位的全部時間為 8ty&C3P3P2P1P0C2C1C0C-1G3G2G1G0Gi=XiYiPi= Xi+Yi3超前進位產生電路 C0 = G0 + P0C-1 C1 = G1 + P1C0 C2 = G2 + P2C1C3 = G3 + P
6、3C2 = G1 + P1G0 + P1P0C-1 = G2 + P2G1 + P2P1G0 + P2P1P0C-1 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0C-1 用與或非門實現1 & &1 &1 &1 &C-1G3P3G2P2G1P1G0P0 11 1 1C0C1C2C3CnCn+zCn+yCn+x=G+PC-14.超前進位芯片 74182116G1G0G3G2P0P1P3P2Cn+zCnCn+xCn+yVCGNDPGC0C1C2C-1S25一位ALU的結構原理 運算方式選擇 S1S0=00 Zi=XiYiS1S0=01 Zi=XiYiS1S0=
7、10 Zi=FA的輸出S2=0S2=1實現何種運算?64位ALU SN74181 兩種工作方式:正邏輯和負邏輯 Cn+4CnX3X0X1X2Y0Y1Y2Y3=1邏輯運算01111Cn+4CnX3X0X1X2Y0Y1Y2Y3=0算術運算1C2C1C0Cn低電平有效74181的算術/邏輯運算功能(正邏輯方式) 7用SN74181 實現不同位數的ALU 16位ALU片間串行進位Cn+4CnCnCn+4CnCn+4CnCn+4CnCn+16片間并行進位Cn181Cn+x P0 G0181Cn+y P1 G1181P3 G3P G182181Cn+z P2 G2 64位ALUCnCn+x P0 G0P3
8、 G3P G182Cn181Cn+x P0G0181P3 G3P G182Cn+z181Cn+x P0G0181P3 G3P G1823.3 定點數運算加/減運算及其運算部件 補碼 加減運算乘法運算及其運算部件原碼 / 補碼 乘法運算除法運算及其運算部件原碼 / 補碼 除法運算一、加減法運算1. 補碼加減運算公式(1) 加法 (2) 減法 整數 A補 + B補= A+B補(mod 2n+1)小數 A補 + B補= A+B補(mod 2)AB= A+(B )整數 A B補= A+(B )補= A補 + B補(mod 2n+1)小數 A B補= A+(B )補(mod 2)連同符號位一起相加,符號
9、位產生的進位自然丟掉= A補 + B補證明 設A0, B0BA ( A+B 0 )A+B補=2+A+B=A+2+B=A補+B補B A ( A+B 0 )A+B補=A+B=A +2 +B(mod 2)=A補+B補例3.2 解:已知 y補 求 y補 y補 = 0. y1 y2 yny = 0. y1 y2 yny = 0. y1 y2 yn y補 = 1.y1 y2 yn + 2-n y補 = 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補 = 0. y1 y2 yn + 2-n設
10、 y補 = y0. y1 y2 yn每位取反,即得 y補y補連同符號位在內,末位加 1每位取反,即得 y補y補連同符號位在內,末位加 12. 舉例解:A補B補A補 + B補+= 0 . 1 0 1 1= 1 . 1 0 1 1= 1 0 . 0 1 1 0= A + B補驗證例 3.3設 A = 0.1011,B = 0.0101求 A + B補0.1011 0.01010.0110 A + B = 0 . 0 1 1 0A補B補A補 + B補+= 1 , 0 1 1 1= 1 , 1 0 1 1= 1 1 , 0 0 1 0= A + B補驗證 1001 1110 0101+例 3.4設 A
11、 = 9,B = 5 求 A+B補解: A + B = 1110例 3.5設機器數字長為 8 位(含 1 位符號位)且 A = 15, B = 24,用補碼求 A B解:A = 15 = 0001111B = 24= 0011000A補 + B補+A補= 0, 0001111 B補= 1, 1101000= 1, 1110111= A B補B補 = 0, 0011000 A B = 1001 = 9例 3.6解:x= 0.1001y=0.1011x補 + y補+x補= 0.1001 y補= 0.1011= 1.0100設 x = 9/16 y =11/16 用補碼求 x+yx + y = 0.
12、1100 =1216同理 設機器數字長為 8 位(含 1 位符號位) 且 A = 97,B = +41,用補碼求 A BA B = + 1110110 = + 118錯錯大于1溢出3. 溢出判斷(1) 一位符號位判溢出參加操作的 兩個數(減法時即為被減數和“求補”以后的減數)符號相同,其結果的符號與原操作數的符號不同,即為溢出硬件實現最高有效位的進位 符號位的進位 = 1如1 0 = 10 1 = 1有 溢出0 0 = 01 1 = 0無 溢出溢出兩數符號不同? -7- 6 = -7 + (-6) -3 - 5 = - 3 + (- 5)0111+00111100111010001000111
13、111溢出現象:(1) 最高位和次高位的進位不同 (2) 和的符號位和加數的符號位不同X= +3= - 8(2) 兩位符號位判溢出x補 = x 1 x 0 4 + x 0 x 1(mod 4)x補 + y補 = x + y 補 (mod 4)x y補 = x補 + y補 (mod 4)存儲時仍然是一位符號位,運算時擴充為兩位 -7- 6 = -7 + (-6) -3 - 5 = - 3 + (- 5)11+0011110011101000100011X= +3= - 8111111結果的雙符號位 相同 未溢出結果的雙符號位 不同 溢出最高符號位 代表其 真正的符號00. 11. 10, 01,
14、 4. 補碼加減法的硬件配置ALUnnnAResultZeroCarryInCarryOutnBn01MuxSelSubBoverflow補碼加減運算部件二、原碼加/減運算用于浮點數尾數運算符號位和數值部分分開處理僅對數值部分進行加減運算符號位起判斷和控制作用運算規則:比較兩數符號,對加法實行“同號求和,異號求差”, 對減法實行“異號求和,同號求差”。求和:數值位相加,若最高位產生進位,則結果溢出。和的符號取被加數(被減數)的符號。求差:被加數(被減數)加上加數(減數)的補碼。最高數值位產生進位表明加法結果為正,所得數值位正確。最高數值位沒產生進位表明加法結果為負,得到的是數值位的補碼形式,需
15、對結果求補,還原為絕對值形式的數值位。差的符號位: a)情況下,符號位取被加數(被減數)的符號; b)情況下,符號位為被加數(被減數)的符號取反。三、移碼加/減運算用于浮點數階碼運算符號位和數值部分可以一起處理移碼運算規則x移 + y補= x + y移 (mod 2n1 )x移 + y補= x y移 (mod 2n1 )移碼和補碼的數值位相同、符號位相反證明x移 = 2n + x(2nx 2n)x移 + y移 = 2n + x + 2n +y = 2n + (2n + x +y)= 2n + x + y移 又: y補 = 2n1 +y x移 + y補 = 2n + x + 2n1 +y = 2
16、n1 + x + y移 = x + y移 (mod 2n1 )同理有x移 + y補= x y移 為防止溢出,采用雙符號位的階碼加法器規定:移碼的最高符號位恒用 “ 0 ”參加運算結果符號:00011011?正常正負上溢下溢例: x= 011 y=110 求xy移 x移 01,011 y補 00,110 y補 11,010 x+y移 x移 + y補 01,011+ 00,11000101 (mod 25,3 )10,001 (上溢, 9)x-y移 x移 + -y補 01,011+ 11,0101. 分析筆算乘法A = 0.1101 B = 0.1011AB = 0.100011110 . 1 1
17、 0 10 . 1 0 1 11 1 0 11 1 0 10 0 0 01 1 0 10 . 1 0 0 0 1 1 1 1符號位單獨處理乘數的某一位決定是否加被乘數 4個位積一起相加乘積的位數擴大一倍乘積的符號心算求得 ?四、乘法運算= A (0.1 + 0.00 + 0.001 +0.0001)2. 筆算乘法改進A B = A 0.1011= 0.1A + 0.00A + 0.001A +0.0001A= 0.1A + 0.00A + 0.001(1 A +0.1A)= 0.1A + 0.010 A + 0. 1(1 A +0.1A)= 0.11 A +0.1 0 A+0.1(1 A +
18、0.1A)= 2-11 A +2-10 A+2-1(1 A + 2-1(1 A+0)第一步 被乘數A + 0第二步 1,得新的部分積第八步 1,得結果第三步 部分積 + 被乘數右移一位3. 改進后的筆算乘法過程(豎式)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初態,部分積 = 0乘數為 1,加被乘數乘數為 1,加被乘數乘數為 0,加 01 . 0 0 1 110 . 1 0 0 11 11 . 0 0 0 11 1 1乘數為 1,加 被乘數 0 . 1 0 0 01 1 1 11,得結果1 0 1 1=0
19、 . 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= 部 分 積 乘 數 說 明小結 被乘數只與部分積的高位相加 由乘數的末位決定被乘數是否與原部分積相加, 然后 1 形成新的部分積,同時 乘數 1(末 位移丟),空出高位存放部分積的低位。硬件3個寄存器,具有移位功能一個全加器 乘法 運算 加和移位。n = 4,加 4 次,移 4 次(1) 原碼一位乘運算規則以小數為例設x原 = x0.x1x2 xn y原 = y0.y1y2 yn= (x0 y0). x*y*x y原 = (x0
20、 y0).(0.x1x2 xn)(0.y1y2 yn)式中 x*= 0.x1x2 xn 為 x 的絕對值 y*= 0.y1y2 yn 為 y 的絕對值 乘積的符號位單獨處理 x0 y0數值部分為絕對值相乘 x* y*4. 原碼乘法(2) 原碼一位乘遞推公式x* y* = x*(0.y1y2 yn)= x*(y12-1+y22-2+ + yn2-n)= 2-1(y1x*+2-1(y2x*+ 2-1(ynx* + 0) ) )p1pnp0 = 0p1 = 2-1(ynx*+p0)p2 = 2-1(yn-1x*+p1)pn = 2-1(y1x*+pn-1)p0例3.7已知 x = 0.1110 y
21、= 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部分積 初態 p0 = 0 部 分 積 乘 數 說 明0 . 0 1 1 101 . 0 0 0 11 01 . 0 1 1 01 1 00 . 1 0 1 10 1 1 01,得 p4邏輯右移邏輯右移1 1 0 1=0 . 0 1 1 11,得 p0 1 1 0=0 . 0 0 1 11,得 p21 0 1 1=0 . 1 0 0 01,得 p31 1 0 1= 數值部分按絕對值相乘 乘積的符號位 x0 y0 = 1
22、 0 = 1x* y* = 0. 1 0 1 1 0 1 1 0則 x y原 = 1. 1 0 1 1 0 1 1 0特點絕對值運算邏輯移位例3.7 結果用移位的次數判斷乘法是否結束(3) 原碼一位乘的硬件配置X、Y、P 均 n+1 位移位和加受末位乘數控制寫使能控制邏輯右移32位 ALU被乘數寄存器X乘積寄存器P3264 位323232加計數器Cn時鐘C乘數寄存器Y(4) 原碼兩位乘原碼乘符號位 和 數值位 部分 分開運算兩位乘每次用 乘數的 2 位判斷 原部分積是否加 和 如何加 被乘數1 11 00 10 0新的部分積乘數yn-1 yn加 “0” 2加 1 倍的被乘數 2加 2 倍的被乘
23、數 2加 3 倍的被乘數 23 ?先 減 1 倍 的被乘數再 加 4 倍 的被乘數4 13100 0111(5) 原碼兩位乘運算規則11 111 010 110 001 101 000 100 0 操 作 內 容標志位Tj乘數判斷位yn-1yn p 2, y* 2, Tj 保持“0” p 2, y* 2, Tj 保持“1”px* 2, y* 2, Tj 保持“1” p+2x* 2, y* 2, Tj 保持“0”p+x* 2, y* 2, Tj 保持“0”共有操作 +x* +2x* x* 2實際操作 +x*補 +2x*補 +x* 補 2 補碼移 px* 2, y* 2, 置“1” Tjp+2x*
24、 2, y* 2, 置“0” Tj p+x* 2, y* 2, 置“0” Tj例3.8已知 x = 0.111111 y = 0.111001 求xy原0 0 0 . 0 0 0 0 0 00 0 0 . 1 1 1 1 1 10 0 0 . 1 1 1 1 1 10 0 . 1 1 1 0 0 10初態 p0 = 0+ x*, T0 = 00 1 0 . 0 0 1 1 0 11 10 0 0 . 1 1 1 0 0 00 0 0 1 1 1 1 1 1 . 1 0 0 1 0 00 1 1 1 0 0 1 . 1 1 1 1 1 0+ 2x*,T1 = 01 1 1 . 0 0 0 0 0
25、 1 x*, T2 = 10 0 0 . 1 1 1 1 1 1+ x*, T3 = 000 0 0 . 0 0 1 1 1 11 1 0 0 1 1 1 0200 0 0 . 1 0 0 0 1 10 1 1 1 0 0 1 1211 1 1 . 1 1 1 0 0 1 0 0 0 1 1 1 0 02Tj部 分 積 乘 數 說 明補碼右移補碼右移解:數值部分的運算 數值部分的運算 乘積的符號位 x0 y0 = 0 1 = 1x* y* = 0. 1 1 1 0 0 0 0 0 0 1 1 1則 x y原 = 1. 1 1 1 0 0 0 0 0 0 1 1 1例3.8 結果特點絕對值的補碼
26、運算算術移位用移位的次數判斷乘法是否結束(6) 原碼兩位乘和原碼一位乘比較符號位操作數移位移位次數最多加法次數x0 y0 x0 y0絕對值絕對值的補碼邏輯右移算術右移nnn2(n為偶數)n2+1(n為偶數)思考 n 為奇數時,原碼兩位乘 移 ?次最多加 ?次原碼一位乘原碼兩位乘設 被乘數乘數x補 = x0.x1x2 xny補 = y0.y1y2 yn準備知識(以小數為例)2-1 x補 = x0. x0 x1x2 xn = 2-1 x補 0.110補=1.010 2-1 ( 0.110)補= 0.0110補= 1.1010y = y補 2y0 y0.y1y2 yn 2y0 0.y1y2 yn y
27、0y為正時y0 0y為負時y0 1算術移1位五、 補碼乘法(1) 補碼一位乘運算規則 校正法x y補= x ( 0.y1 yn y0)補= x (y1 2-1+y22-2+ +yn2-n y0 )補 = x補(y1 2-1+y22-2+ +yn2-n) x補 y0用校正法求x y補是用x補乘以 y補的數值位,最后再根據y補的符號y0做一次校正y為負,加 x補 y為正,不加= x (y1 2-1+y22-2+ +yn2-n )x y0補 已知x補和y補求x y補和原碼一位乘法相同,部分積右移時采用算術移位Booth 算法(被乘數、乘數符號任意)設x補 = x0.x1x2 xn y補 = y0.y
28、1y2 ynx 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-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-nx補= +x補 2-1 = 20 2-12-2 = 2-1 2-22-12-2= x補(y1y0)+(y2y1)2-1+ +(yn+1yn)2-n 附加位 yn+1Booth 算法遞
29、推公式p0補= 0p1補= 2-1(yn+1yn)x補+p0補 yn+1 = 0pn補= 2-1(y2y1)x補+pn-1補x y補= pn補+(y1y0)x補最后一步不移位如何實現 yi+1yi ?0 00 11 01 11+x補 1+x補 11yi yi+1操作yi+1yi 0 1 -1 0 例3.9已知 x = +0.0011 y = 0.1011 求xy補解:0 0 . 0 0 0 01 1 . 1 1 0 11 1 1 . 1 1 0 10 0 . 0 0 1 11 1 . 1 1 0 10 0 . 0 0 1 11 1 . 1 1 0 11 . 0 1 0 100 0 . 0 0
30、0 111 1 . 1 1 0 11 10 0 . 0 0 0 11 1 11 1 . 1 1 0 11 1 1 1 x補 = 0.0011y補 = 1.0101x補 = 1.1101+x補 1 1 . 1 1 1 0 1 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 0110 0 . 0 0 0 0 1 1 1 1 101+x補+x補 xy補 =1.11011111 最后一步不移位 算術移位1 11 (2) Booth 算法的硬件配置P、X、Y 均 n + 2 位移位和加受末兩位乘數控制寫使能控制邏輯右移32位 AL
31、U被乘數寄存器X乘積寄存器P3264 位323232加計數器Cn時鐘C乘數寄存器Y減Booths 算法實質當前位右邊位操作Example10減被乘數000111100011加0 (不操作)000111100001加被乘數000111100000加0 (不操作) 0001111000 在“1串”中,第一個1時做減法,最后一個1做加法, 其余情況只要移位。最初提出這種想法是因為在Booth的機器上 移位操作比加法更快!0 1 1 1 1 0beginning of runend of runmiddle of run(3) 補碼兩位乘(略)操 作 內 容乘數判斷位yn-1ynyn1000pi+1補
32、= 2-2pi補pi+1補= 2-2 pi補+ x補pi+1補= 2-2 pi補+ x補pi+1補= 2-2 pi補+ 2x補pi+1補= 2-2 pi補+2 -x補pi+1補= 2-2 pi補+ -x補pi+1補= 2-2 pi補+ -x補pi+1補= 2-2pi補001010011100101110111六、快速乘法器設計快速乘法部件的必要性:大約1/3是乘法運算 快速乘法器的實現流水線方式硬件疊加方式(如:陣列乘法器)陣列乘法器用一個實現特定功能的組合邏輯單元構成一個陣列 乘法小結 原碼乘 符號位 單獨處理 補碼乘 符號位 自然形成 原碼乘去掉符號位運算 即為無符號數乘法 不同的乘法運算
33、需有不同的硬件支持 整數乘法與小數乘法完全相同 可用 逗號 代替小數點1. 分析筆算除法x = 0.1011 y = 0.1101 求 xy0 . 1 0 1 10 . 1 1 0 10 . 0 1 1 0 10 . 0 1 0 0 10 . 0 0 1 1 0 10 . 0 0 0 1 0 10 . 0 0 0 0 1 1 0 10 . 0 0 0 0 0 1 1 1 1商符單獨處理心算上商余數不動低位補“0”減右移一位的除數上商位置不固定xy = 0. 1 1 0 1余數 0. 0 0 0 0 0 1 1 1商符心算求得00.101000 ?七、原碼除法運算2. 筆算除法和機器除法的比較筆
34、算除法 機器除法商符單獨處理心算上商符號位異或形成| x | | y | 0 上商 1| x | | y | 0 上商 0余數 不動 低位補“0”減右移一位 的除數2 倍字長加法器上商位置 不固定余數 左移一位 低位補“0”減 除數1 倍字長加法器在寄存器 最末位上商3. 原碼除法(以小數為例)x0原 = x0.x1x2 xny0原 = y0.y1y2 yn式中 x* = 0.x1x2 xn 為 x 的絕對值 y* = 0.y1y2 yn 為 y 的絕對值數值部分為絕對值相除x*y*被除數不等于 0除數不能為 0小數定點除法 x* y*整數定點除法 x* y*商的符號位單獨處理 x0 y0 原
35、 = (x0 y0).xyx*y*約定(1) 恢復余數法0 . 1 0 1 11 . 0 0 1 11 . 0 0 1 11 . 0 0 1 10 . 0 0 0 0+ y*補01 . 1 1 1 0余數為負,上商 00 . 1 1 0 1恢復余數00 . 1 0 0 1余數為正,上商 1+ y*補1 . 0 1 1 0011 . 0 0 1 00 11+y*補解:被除數(余數) 商 說 明x原 = 1.1011 y原 = 1.1101 x0 y0 = 1 1 = 0 x = 0.1011 y = 0.1101求 原 xy例3.1010 . 1 0 1 1恢復后的余數0+y*補y*補 = 0.
36、1101 y*補 = 1.0011邏輯左移邏輯左移0 . 0 1 0 10 1余數為正,上商 1被除數(余數) 商 說 明1 . 0 0 1 10 . 1 1 0 11 . 0 0 1 110 . 1 0 1 00 1 1+ y*補1 . 1 1 0 10 1 1 余數為負,上商 0恢復余數1 . 0 1 0 00 1 1 01+ y*補0 . 0 1 1 10 1 1 0 余數為正,上商 1= 0.1101x*y* 原xy= 0.1101上商 5 次第一次上商判溢出余數為正 上商 1余數為負 上商 0,恢復余數移 4 次100 . 1 0 1 0恢復后的余數0 1 1 01+y*補邏輯左移余
37、數 Ri0 上商 “1”, Ri 1 2Ri y* 余數 Ri0 上商 “0”, Ri + y* 恢復余數 Ri 1 2( Ri+y*) y* = 2Ri + y* 加減交替 恢復余數法運算規則 不恢復余數法運算規則Ri0 上商“1” Ri 1 2Ri y* Ri0 上商“0” Ri 1 2Ri + y* (2)不恢復余數法 (加減交替法)x = 0.1011 y = 0.1101 求 原xy解:例3.110 . 1 0 1 11 . 0 0 1 10 . 1 1 0 11 . 0 0 1 11 . 0 0 1 10 . 1 1 0 10 . 0 0 0 0+ y*補01 . 1 1 1 0余
38、數為負,上商 01 . 1 1 0 001+y*補00 . 1 0 0 1余數為正,上商 1+ y*補1 . 0 0 1 00 11+ y*補+y*補0 . 1 0 1 00 1 111 . 1 0 1 00 1 1 010 . 0 1 0 10 1余數為正,上商 10 . 0 1 1 10 1 1 0 余數為正,上商 1 1 . 1 1 0 10 1 1余數為負,上商 0 x原 = 1.1011y*補 = 0.1101y*補 = 1.0011y原 = 1.11011101邏輯左移第一步x0 y0 = 1 1 = 0 x*/ y* = 0.1101 x*/ y* 原 = 0.1101上商 n+
39、1 次例3.11 結果特點用移位的次數判斷除法是否結束第一次上商判溢出移 n 次,加 n+1 次(3) 原碼加減交替除法硬件配置余數寄存器R:初始時高位部分為高32位被除數;結束時是余數。余數/商寄存器Q:初始時為低32位被除數;結束時是32位商。定點整數相除:在被除數的高位添n個0定點小數相除:在被除數的低位添n個0Ri補= 0.1000 x補 = 1.1101 y補 = 1.0101(1) 商值的確定x = 0.1011y = 0.0011 x補 = 0.1011 y補 = 0.0011x補 = 0.1011y補 = 1.1101Ri補= 0.1000 x = 0.0011y = 0.10
40、11x補 = 1.1101y補 = 0.1011x*y*Ri補與y補同號“夠減”x*y*Ri補與y補異號“不夠減”+ 比較被除數和除數絕對值的大小 x 與 y 同號用減法4. 補碼除法x補和y補求 Ri補Ri補與 y補同號異號x補 y補x補+ y補同號,“夠減”異號,“夠減”小結x = 0.1011y = 0.0011 x補 = 0.1011 y補 = 1.1101x補 = 0.1011y補 = 1.1101Ri補= 0.1000 x = 0.0011y = 0.1011 x補 = 1.1101 y補 = 0.1011x補 = 1.1101y補 = 0.1011Ri補= 0.1000 x*y*
41、Ri補與y補異號“夠減”x*y*Ri補與y補同號“不夠減”+ x 與 y 異號用加法 商值的確定x補與 y補同號正商按原碼上商“夠減”上“1”“不夠減”上“0”x補與 y補異號負商按反碼上商“夠減”上“0”“不夠減”上“1”Ri補與y補商值同 號異 號100 .原碼1. 11 .反碼1. 1末位恒置“1”法x補與 y補商Ri補與 y補商 值夠減不夠減夠減不夠減同 號異 號正負1001原碼上商反碼上商小 結簡 化 為(同號)(異號)(異號)(同號)(2) 商符的形成 除法過程中自然形成x補和y補同號x補y補比較Ri補和y補同號(夠)“1”異號(不夠)“0”原碼上商小數除法 第一次“不夠”上“0”
42、正商x補和y補異號x補+y補比較Ri補和y補異號(夠)“0”同號(不夠)“1”反碼上商小數除法 第一次“不夠”上“1”負商(3) 新余數的形成Ri補和 y補商新余數同 號異 號102Ri補 + y補2Ri補 + y 補加減交替例3.12設 x = 0.1011 y = 0.1101 求 并還原成真值 補xy解:x補 = 1.0101 y補 = 0.1101 y補 = 1.00111 . 0 1 0 10 . 1 1 0 11 . 0 0 1 10 . 1 1 0 10 . 1 1 0 10 . 0 0 0 0異號做加法10 . 0 0 1 0同號上“1”1 . 0 1 1 11 異號上“0”+
43、y補1 . 1 0 1 11 0 異號上“0”+y補0 . 0 0 1 11 0 0同號上“1”0 . 0 1 0 0110 . 1 1 1 01 011 . 0 1 1 01 0 01末位恒置“1”0 . 0 1 1 01 0 0 1 1 補= 1.0011xy0011+y補xy= 0.1101則邏輯左移(4) 小結 補碼除法共上商 n +1 次(末位恒置 1) 第一次為商符 加 n 次 移 n 次 第一次商可判溢出 精度誤差最大為 2-n整數被除數經符號擴展后成2n位邏輯左移3.4 浮點四則運算一、浮點加減運算x = Sx 2jxy = Sy 2jy1. 對階(1) 求階差(2) 對階原則
44、j = jx jy = jx= jy 已對齊jx jy jx jy x 向 y 看齊y 向 x 看齊x 向 y 看齊y 向 x 看齊小階向大階看齊Sx 1, Sy 1, Sx 1, Sy 1, = 0 0 0 jx1jy+1 jx+1jy1為什么?例如x = 0.1101 201 y = (0.1010) 211求 x + y解:x補 = 00, 01; 00.1101 y補 = 00, 11; 11.0110 1. 對階j補 = jx補 jy補= 00, 0111, 0111, 10階差為負( 2)Sx 補= 00.0011 Sy補= 11.011011.1001 Sx 2 jx+ 2 x+
45、y補 = 00, 11; 11. 1001 對階x補= 00, 11; 00.0011+對階后的Sx補 求階差2. 尾數求和3. 規格化(1) 規格化數的定義(2) 規格化數的判斷r = 2 |S| 1 12S0真值原碼補碼反碼規格化形式S 0規格化形式真值原碼補碼反碼0.1 0.1 0.1 0.1 原碼 不論正數、負數,第一數位為1補碼 符號位和第 1 數位不同 0.1 1.1 1.0 1.0 特例S = = 0.100 0 12 12 補 不是規格化的數S = 1 1補 是規格化的數S原 = 1 . 1 0 0 0S補 = 1 . 1 0 0 0S補 = 1 . 0 0 0 0 機器判別方
46、便(3) 左規(4) 右規尾數 1,階碼減 1,直到數符和第一數位不同為止 上例 x+y補 = 00, 11; 11. 1001左規后 x+y補 = 00, 10; 11. 0010 x + y = ( 0.1110)210 當 尾數溢出( 1)時,需 右規即尾數出現 01. 或 10. 時尾數 1,階碼加 1例3.12x = 0.1101 210 y = 0.1011 201求 x +y(除階符、數符外,階碼取 3 位,尾數取 6 位) 解:x補 = 00, 010; 00. 110100y補 = 00, 001; 00. 101100 對階 尾數求和j補 = jx補 jy補 = 00, 0
47、10 11, 111100, 001階差為 +1 Sy 1, jy+1 y補 = 00, 010; 00. 010110Sx補 = 00. 110100Sy補 = 00. 010110對階后的Sy補01. 001010+尾數溢出需右規 右規x +y補 = 00, 010; 01. 001010 x +y補 = 00, 011; 00. 100101右規后 x +y = 0. 100101 2114. 舍入在 對階 和 右規 過程中,可能出現 尾數末位丟失引起誤差,需考慮舍入(1) 0 舍 1 入法 尾數為補碼時,0舍1入法修正為:多余位置的最高位為1,以下各位不全為0時,入1,其它情況,舍去。
48、 尾數為原碼時,多余位的最高位為1,入1否則,舍去。(4) IEEE754舍入模式(P114,自學)(2) 恒置 “1” 法(1) 0 舍 1 入法 (3) 截斷 法例 3.13x = ( )2-5 y = () 2-4 5878求 x y(除階符、數符外,階碼取 3 位,尾數取 6 位)解:x補 = 11, 011; 11. 011000y補 = 11, 100; 00. 111000 對階j補 = jx補 jy補 = 11, 011 00, 100 11, 111階差為 1 Sx 1, jx+ 1 x補 = 11, 100; 11. 101100 x = ( 0.101000)2-101y
49、 = ( 0.111000)2-100+ 尾數求和Sx補 = 11. 101100Sy補 = 11. 001000+110. 110100 右規x+y補 = 11, 100; 10. 110100 x+y補 = 11, 101; 11. 011010右規后 x y = (0.100110)2-11= ( )2-319325. 溢出判斷 設機器數為補碼,尾數為 規格化形式,并假設階符取 2 位,階碼取 7 位,數符取 2 位,尾數取 n 位,則該 補碼 在數軸上的表示為上溢下溢上溢 對應負浮點數 對應正浮點數00,1111111;11.00 0 00,1111111;00.11 111,0000
50、000;11.011 111,0000000;00.100 02127(1) 2-128(2-1+ 2-n)2-1282-12127(12-n)最小負數最大負數最小正數最大正數0階碼01, 階碼01, 階碼 10, 按機器零處理二、浮點乘除運算x = Sx 2jxy = Sy 2jy1. 乘法x y = (Sx Sy)2jx+jy2. 除法xy=SxSy 2jx jy(1) 階碼運算(2) 尾數乘除運算3. 步驟(3) 規格化(4)舍入處理例:已知x=0.101120110 y=-0.010120011,試用浮點數運算方法計算x*y。要求浮點數的格式為:階碼6位(2位階符),補碼表示,尾數5位(1位數符),補碼表示,并要求為規格化浮點數。解 對x及y按所要求的浮點數格式編碼x已是規格化數,可直接編碼x浮=00,0110;0.1011Y不是規格化數,先將y化為規格化數再編碼y=-0.010120011=-0.101020010 y浮=00,0010;1.0110 求x*y階碼相加尾數相乘E=Ex+Ey=00,0110+00,0010=00,1000M補=Mx*My補=11.10010010規格化左規積的尾數M左移一位 M補=11.0010010 積的階碼E減1 E=00,1000+11,1111=00,0111 舍入檢查是否溢出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國功夫美術課件
- 腫瘤免疫治療藥物作用機理
- 大單元課堂活動設計
- 中國制度面對面課件
- 2025屆福建省漳州市龍文區龍文中學英語八下期中質量檢測模擬試題含答案
- ICU患者的護理常規
- 莒縣招工作總結與計劃
- 公交機動車運行技術課件
- 義工服務技能培訓
- 走好人生第一步廉政教育
- 二三級醫院放射科要求
- 危大工程巡視檢查記錄表(深基坑)
- 鋼網架結構安裝、拼裝施工方案
- Q∕SY 05262-2019 機械清管器技術條件
- 2022年社會學概論考試重點廣東海洋
- 二級建造師法規課件
- 早產兒出院后喂養(課堂PPT)
- 英語的起源與發展(課堂PPT)
- 北京市中級專業技術資格評審申報表
- 鼠害蟲害防治管理制度
- 整體yuan yin yun yingp
評論
0/150
提交評論