版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第 1 章 習(xí) 題 答 案5若有兩個(gè)基準(zhǔn)測試程序P1和P2在機(jī)器M1和M2上運(yùn)行,假定M1和M2的價(jià)格分別是5000元和8000元,下表給出了P1和P2在M1和M2上所花的時(shí)間和指令條數(shù)。程序M1M2指令條數(shù)執(zhí)行時(shí)間(ms)指令條數(shù)執(zhí)行時(shí)間(ms)P1200×10610000150×1065000P2300×1033420×1036請(qǐng)回答下列問題:(1) 對(duì)于P1,哪臺(tái)機(jī)器的速度快?快多少?對(duì)于P2呢?(2) 在M1上執(zhí)行P1和P2的速度分別是多少M(fèi)IPS?在M2上的執(zhí)行速度又各是多少?從執(zhí)行速度來看,對(duì)于P2,哪臺(tái)機(jī)器的速度快?快多少?(3) 假定M1
2、和M2的時(shí)鐘頻率各是800MHz和1.2GHz,則在M1和M2上執(zhí)行P1時(shí)的平均時(shí)鐘周期數(shù)CPI各是多少? (4) 如果某個(gè)用戶需要大量使用程序P1,并且該用戶主要關(guān)心系統(tǒng)的響應(yīng)時(shí)間而不是吞吐率,那么,該用戶需要大批購進(jìn)機(jī)器時(shí),應(yīng)該選擇M1還是M2?為什么?(提示:從性價(jià)比上考慮)(5) 如果另一個(gè)用戶也需要購進(jìn)大批機(jī)器,但該用戶使用P1和P2一樣多,主要關(guān)心的也是響應(yīng)時(shí)間,那么,應(yīng)該選擇M1還是M2?為什么?參考答案:(1) 對(duì)于P1,M2比M1快一倍;對(duì)于P2,M1比M2快一倍。(2) 對(duì)于M1,P1的速度為:200M/10=20MIPS;P2為300k/0.003=100MIPS。對(duì)于M
3、2,P1的速度為:150M/5=30MIPS;P2為420k/0.006=70MIPS。從執(zhí)行速度來看,對(duì)于P2,因?yàn)?00/70=1.43倍,所以M1比M2快0.43倍。 (3) 在M1上執(zhí)行P1時(shí)的平均時(shí)鐘周期數(shù)CPI為:10×800M/(200×106)=40。在M2上執(zhí)行P1時(shí)的平均時(shí)鐘周期數(shù)CPI為:5×1.2G/(150×106)=40。(4) 考慮運(yùn)行P1時(shí)M1和M2的性價(jià)比,因?yàn)樵撚脩糁饕P(guān)心系統(tǒng)的響應(yīng)時(shí)間,所以性價(jià)比中的性能應(yīng)考慮執(zhí)行時(shí)間,其性能為執(zhí)行時(shí)間的倒數(shù)。故性價(jià)比R為:R=1/(執(zhí)行時(shí)間×價(jià)格)R越大說明性價(jià)比越高,也
4、即,“執(zhí)行時(shí)間×價(jià)格”的值越小,則性價(jià)比越高。因?yàn)?0×5000 > 5×8000,所以,M2的性價(jià)比高。應(yīng)選擇M2。(5) P1和P2需要同等考慮,性能有多種方式:執(zhí)行時(shí)間總和、算術(shù)平均、幾何平均。若用算術(shù)平均方式,則:因?yàn)?(10+0.003)/2×5000 > (5+0.006)/2×8000,所以M2的性價(jià)比高,應(yīng)選擇M2。若用幾何平均方式,則:因?yàn)閟qrt(10×0.003) ×5000 < sqrt(5×0.006) ×8000,所以M1的性價(jià)比高,應(yīng)選擇M1。6若機(jī)器M1和
5、M2具有相同的指令集,其時(shí)鐘頻率分別為1GHz和1.5GHz。在指令集中有五種不同類型的指令A(yù)E。下表給出了在M1和M2上每類指令的平均時(shí)鐘周期數(shù)CPI。機(jī)器ABCDEM112234M222456請(qǐng)回答下列問題:(1)M1和M2的峰值MIPS各是多少?(2)假定某程序P的指令序列中,五類指令具有完全相同的指令條數(shù),則程序P在M1和M2上運(yùn)行時(shí),哪臺(tái)機(jī)器更快?快多少?在M1和M2上執(zhí)行程序P時(shí)的平均時(shí)鐘周期數(shù)CPI各是多少?參考答案:(1)M1上可以選擇一段都是A類指令組成的程序,其峰值MIPS為1000MIPS。M2上可以選擇一段A和B類指令組成的程序,其峰值MIPS為1500/2=750MI
6、PS。(2)5類指令具有完全相同的指令條數(shù),所以各占20%。在M1和M2上執(zhí)行程序P時(shí)的平均時(shí)鐘周期數(shù)CPI分別為: M1:20%×(1+2+2+3+4)= 0.2×12 = 2.4M2:20%×(2+2+4+5+6)= 0.2×19 = 3.8 假設(shè)程序P的指令條數(shù)為N,則在M1和M2上的執(zhí)行時(shí)間分別為:M1:2.4× N×1/1G = 2.4N (ns)M2:3.8×N×1/1.5G = 2.53 N (ns) M1執(zhí)行P的速度更快,每條指令平均快0.13ns,也即M1比M2快0.13/2.53×10
7、0%5%。(思考:如果說程序P在M1上執(zhí)行比M2上快 (3.82.4)/3.8×100%= 36.8%,那么,這個(gè)結(jié)論顯然是錯(cuò)誤的。請(qǐng)問錯(cuò)在什么地方?)7假設(shè)同一套指令集用不同的方法設(shè)計(jì)了兩種機(jī)器M1和M2。機(jī)器M1的時(shí)鐘周期為0.8ns,機(jī)器M2的時(shí)鐘周期為1.2ns。某個(gè)程序P在機(jī)器M1上運(yùn)行時(shí)的CPI為4,在M2上的CPI為2。對(duì)于程序P來說,哪臺(tái)機(jī)器的執(zhí)行速度更快?快多少?參考答案:假設(shè)程序P的指令條數(shù)為N,則在M1和M2上的執(zhí)行時(shí)間分別為:M1:4 N×0.8 = 3.2N (ns)M2:2 N×1.2 = 2.4 N (ns) 所以,M2執(zhí)行P的速度更
8、快,每條指令平均快0.8ns,比M1快0.8/3.2×100%=25%。8假設(shè)某機(jī)器M的時(shí)鐘頻率為4GHz,用戶程序P在M上的指令條數(shù)為8×109,其CPI為1.25,則P在M上的執(zhí)行時(shí)間是多少?若在機(jī)器M上從程序P開始啟動(dòng)到執(zhí)行結(jié)束所需的時(shí)間是4秒,則P占用的CPU時(shí)間的百分比是多少?參考答案:程序P在M上的執(zhí)行時(shí)間為:1.25×8×109×1/4G = 2.5 s,從啟動(dòng)P執(zhí)行開始到執(zhí)行結(jié)束的總時(shí)間為4秒,其中2.5秒是P在CPU上真正的執(zhí)行時(shí)間,其他時(shí)間可能執(zhí)行操作系統(tǒng)程序或其他用戶程序。程序P占用的CPU時(shí)間的百分比為:2.5/4 =
9、62.5%。9假定某編譯器對(duì)某段高級(jí)語言程序編譯生成兩種不同的指令序列S1和S2,在時(shí)鐘頻率為500MHz的機(jī)器M上運(yùn)行,目標(biāo)指令序列中用到的指令類型有A、B、C和D四類。四類指令在M上的CPI和兩個(gè)指令序列所用的各類指令條數(shù)如下表所示。ABCD各指令的CPI1234S1的指令條數(shù)5221S2的指令條數(shù)1115請(qǐng)問:S1和S2各有多少條指令?CPI各為多少?所含的時(shí)鐘周期數(shù)各為多少?執(zhí)行時(shí)間各為多少?參考答案:S1有10條指令,CPI為 (5×1+2×2+2×3+1×4)/10=1.9, 所含的時(shí)鐘周期數(shù)為10×1.9=19,執(zhí)行時(shí)間為19/5
10、00M = 38ns。S2有8條指令,CPI為 (1×1+1×2+1×3+5×4)/8 =3.25, 所含的時(shí)鐘周期數(shù)為8×3.25=26,執(zhí)行時(shí)間為26/500M = 52ns。 (注:從上述結(jié)果來看,對(duì)于同一個(gè)高級(jí)語言源程序,在同一臺(tái)機(jī)器上所生成的目標(biāo)程序不同,其執(zhí)行時(shí)間可能不同,而且,并不是指令條數(shù)少的目標(biāo)程序執(zhí)行時(shí)間就一定少。)10假定機(jī)器M的時(shí)鐘頻率為1.2GHz,某程序P在機(jī)器M上的執(zhí)行時(shí)間為12秒鐘。對(duì)P優(yōu)化時(shí),將其所有的乘4指令都換成了一條左移2位的指令,得到優(yōu)化后的程序P。已知在M上乘法指令的CPI為5,左移指令的CPI為2,
11、P的執(zhí)行時(shí)間是P執(zhí)行時(shí)間的1.2倍,則P中有多少條乘法指令被替換成了左移指令被執(zhí)行?參考答案:顯然,P的執(zhí)行時(shí)間為10秒,因此,P比P多花了2秒鐘,因此,執(zhí)行時(shí)被換成左移指令的乘法指令的條數(shù)為1.2G×2/(52) = 800M。第 二 章 習(xí) 題 答 案3實(shí)現(xiàn)下列各數(shù)的轉(zhuǎn)換。(1) (25.8125)10= (?)2= (?) 8= (?) 16(2) (101101.011)2 = (?)10= (?) 8= (?) 16= (?) 8421(3) (0101 1001 0110.0011)8421 = (?)10= (?) 2= (?) 16(4) (4E.C)16 = (?)
12、10= (?) 2參考答案:(1)(25.8125)10 = (1 1001.1101)2 = (31.64) 8 = (19.D) 16(2)(101101.011)2 = (45.375)10 = (55.3) 8 = (2D.6) 16 = (0100 0101.0011 0111 0101) 8421(3)(0101 1001 0110.0011)8421 = (596.3)10 = (1001010100.01001100110011) 2 = (254.4CCC) 16(4)(4E.C)16 = (78.75)10 = (0100 1110.11) 24 假定機(jī)器數(shù)為8位(1位符號(hào)
13、,7位數(shù)值),寫出下列各二進(jìn)制數(shù)的原碼和補(bǔ)碼表示。+0.1001,0.1001,+1.0,1.0,+0.010100,0.010100,+0,0參考答案: 原碼 補(bǔ)碼+0.1001:0.10010000.10010000.1001:1.10010001.0111000+1.0:溢出溢出1.0:溢出1.0000000+0.010100: 0.01010000.01010000.010100:1.01010001.1011000+0:0.00000000.00000000:1.00000000.00000005 假定機(jī)器數(shù)為8位(1位符號(hào),7位數(shù)值),寫出下列各二進(jìn)制數(shù)的補(bǔ)碼和移碼表示。+1001
14、,1001,+1,1,+10100,10100,+0,0參考答案: 移碼 補(bǔ)碼+1001: 10001001 000010011001:01110111 11110111+1:10000001000000011:01111111111111111+10100:100101000001010010100:0110110011101100+0:10000000000000000:10000000000000006 已知 x補(bǔ),求x(1)x補(bǔ)=1.1100111 (2)x補(bǔ)=10000000(3)x補(bǔ)=0.1010010 (4)x補(bǔ)=11010011參考答案:(1)x補(bǔ)=1.1100111 x =
15、0.0011001B(2)x補(bǔ)=10000000 x = 10000000B = 128(3)x補(bǔ)=0.1010010 x = +0.101001B(4)x補(bǔ)=11010011 x = 101101B = 457假定一臺(tái)32位字長的機(jī)器中帶符號(hào)整數(shù)用補(bǔ)碼表示,浮點(diǎn)數(shù)用IEEE 754標(biāo)準(zhǔn)表示,寄存器R1和R2的內(nèi)容分別為R1:0000108BH,R2:8080108BH。不同指令對(duì)寄存器進(jìn)行不同的操作,因而,不同指令執(zhí)行時(shí)寄存器內(nèi)容對(duì)應(yīng)的真值不同。假定執(zhí)行下列運(yùn)算指令時(shí),操作數(shù)為寄存器R1和R2的內(nèi)容,則R1和R2中操作數(shù)的真值分別為多少?(1) 無符號(hào)數(shù)加法指令(2) 帶符號(hào)整數(shù)乘法指令(3
16、) 單精度浮點(diǎn)數(shù)減法指令參考答案:R1 = 0000108BH = 0000 0000 0000 0000 0001 0000 1000 1011bR2= 8080108BH = 1000 0000 1000 0000 0001 0000 1000 1011b(1)對(duì)于無符號(hào)數(shù)加法指令,R1和R2中是操作數(shù)的無符號(hào)數(shù)表示,因此,其真值分別為R1:108BH, R2:8080108BH。(2)對(duì)于帶符號(hào)整數(shù)乘法指令,R1和R2中是操作數(shù)的帶符號(hào)整數(shù)補(bǔ)碼表示,由最高位可知, R1為正數(shù), R2為負(fù)數(shù)。R1的真值為+108BH, R2的真值為(0111 1111 0111 1111 1110 111
17、1 0111 0100b + 1b) = 7F7FEF75H。(3)對(duì)于單精度浮點(diǎn)數(shù)減法指令,R1和R2中是操作數(shù)的IEEE754單精度浮點(diǎn)數(shù)表示。在IEEE 754 標(biāo)準(zhǔn)中,單精度浮點(diǎn)數(shù)的位數(shù)為32位,其中包含1位符號(hào)位,8位階碼,23位尾數(shù)。由R1中的內(nèi)容可知,其符號(hào)位為0,表示其為正數(shù),階碼為0000 0000,尾數(shù)部分為000 0000 0001 0000 1000 1011,故其為非規(guī)格化浮點(diǎn)數(shù),指數(shù)為126,尾數(shù)中沒有隱藏的1,用十六進(jìn)制表示尾數(shù)為+0.002116H,故R1表示的真值為+0.002116H × 10-126。由R2中的內(nèi)容可知,其符號(hào)位為1,表示其為負(fù)數(shù)
18、,階碼為0000 0001, 尾數(shù)部分為000 0000 0001 0000 1000 1011,故其為規(guī)格化浮點(diǎn)數(shù),指數(shù)為1127 = 126,尾數(shù)中有隱藏的1,用十六進(jìn)制表示尾數(shù)為1.002116H,故R2表示的真值為1.002116H × 10-1268假定機(jī)器M的字長為32位,用補(bǔ)碼表示帶符號(hào)整數(shù)。下表第一列給出了在機(jī)器M上執(zhí)行的C語言程序中的關(guān)系表達(dá)式,請(qǐng)參照已有的表欄內(nèi)容完成表中后三欄內(nèi)容的填寫。關(guān)系表達(dá)式運(yùn)算類型結(jié)果說明0 = 0U1 < 01 < 0U2147483647 > 2147483647 12147483647U > 21474836
19、47 12147483647 > (int) 2147483648U1 > 2(unsigned) 1 > 2無符號(hào)整數(shù)有符號(hào)整數(shù)無符號(hào)整數(shù)有符號(hào)整數(shù)無符號(hào)整數(shù)有符號(hào)整數(shù)有符號(hào)整數(shù)無符號(hào)整數(shù)11010 111000B = 000B111B (1) < 000B (0)111B (2321) > 000B(0)0111B (2311) > 1000B (231)0111B (2311) < 1000B(231)0111B (2311) > 1000B (231)111B (1) > 1110B (2)111B (2321) > 1110
20、B (2322)9以下是一個(gè)C語言程序,用來計(jì)算一個(gè)數(shù)組a中每個(gè)元素的和。當(dāng)參數(shù)len為0時(shí),返回值應(yīng)該是0,但是在機(jī)器上執(zhí)行時(shí),卻發(fā)生了存儲(chǔ)器訪問異常。請(qǐng)問這是什么原因造成的,并說明程序應(yīng)該如何修改。 1float sum_elements(float a, unsigned len)23int i;4float result = 0;56for(i = 0; i <= len1; i+)7result += ai;8return result;9參考答案:參數(shù)len的類型是unsigned,所以,當(dāng)len=0時(shí),執(zhí)行l(wèi)en-1的結(jié)果為111,是最大可表示的無符號(hào)數(shù),因而,任何無符號(hào)數(shù)
21、都比它小,使得循環(huán)體被不斷執(zhí)行,引起數(shù)組元素的訪問越界,發(fā)生存儲(chǔ)器訪問異常。只要將len聲明為int型,或循環(huán)的測試條件改為i<len。10. 設(shè)某浮點(diǎn)數(shù)格式為:階碼S1尾數(shù)S1數(shù)符S11位S15位移碼S16位補(bǔ)碼S1其中,移碼的偏置常數(shù)為16,補(bǔ)碼采用一位符號(hào)位,基數(shù)為4。(1) 用這種格式表示下列十進(jìn)制數(shù):+1.7,0.12,+19,1/8。(2) 寫出該格式浮點(diǎn)數(shù)的表示范圍,并與12位定點(diǎn)補(bǔ)碼整數(shù)表示范圍比較。參考答案:(假定采用0舍1入法進(jìn)行舍入)(1) +1.7 = +1.1011001B = 0.011011B× 41, 故階碼為1 +16 = 17 = 10001
22、B, 尾數(shù)為+0.011011的補(bǔ)碼, 即0.011011,所以+1.7表示為0 10001 011011。0.12 = 0.000111101B = 0.011111B × 41, 故階碼為 1 + 16 =15 = 01111B, 尾數(shù)為 0.011111的補(bǔ)碼,即1.100001, 所以0.12表示為1 01111 100001。+19 = +10011B = 0.010011B× 43,故階碼為3 + 16 = 19 = 10011B, 尾數(shù)為0.010011,所以+19表示為0 10011 010011。1/8 = 0.125 = 0.001B = 0.10000
23、0 × 41,階碼為 1 + 16 = 15 = 01111B,尾數(shù)為 0.100000的補(bǔ)碼,即1.100000,所以1/8表示為1 01111 100000。(2)該格式浮點(diǎn)數(shù)表示的范圍如下。正數(shù)最大值:0.111111B × 411111,即:0.333× 415 (230 109)正數(shù)最小值:0.000001B × 400000,即:0.001× 416 (2341010)負(fù)數(shù)最大值:0.000001B × 400000,即:0.001× 416負(fù)數(shù)最小值:1.000000B × 411111,即:1.00
24、0× 415 因此,該格式浮點(diǎn)數(shù)的數(shù)量級(jí)在1010109之間。12位定點(diǎn)補(bǔ)碼整數(shù)的表示范圍為:211+(2111),即:20482047由此可見,定點(diǎn)數(shù)和浮點(diǎn)數(shù)的表示范圍相差非常大。11. 下列幾種情況所能表示的數(shù)的范圍是什么?(1) 16位無符號(hào)整數(shù)(2) 16位原碼定點(diǎn)小數(shù)(3) 16位補(bǔ)碼定點(diǎn)小數(shù)(4) 16位補(bǔ)碼定點(diǎn)整數(shù)(5) 下述格式的浮點(diǎn)數(shù)(基數(shù)為2,移碼的偏置常數(shù)為128)尾數(shù)S1階碼S1數(shù)符S18位移碼S17位原碼S11位S1參考答案:(1)無符號(hào)整數(shù):02161。(2)原碼定點(diǎn)小數(shù):(1215) + (1215)。(3)補(bǔ)碼定點(diǎn)小數(shù):1 + (1215)。(4)補(bǔ)碼
25、定點(diǎn)整數(shù):32768 +32767。(5)浮點(diǎn)數(shù):負(fù)數(shù): (127)×2+127 27×2128。正數(shù):+2135 (127) ×2+127。12. 以IEEE 754單精度浮點(diǎn)數(shù)格式表示下列十進(jìn)制數(shù)。+1.75,+19,1/8,258參考答案:+1.75 = +1.11B = 1.11B × 20, 故階碼為0+127=01111111B, 數(shù)符為0,尾數(shù)為1.1100,小數(shù)點(diǎn)前為隱藏位,所以+1.7表示為0 01111111 110 0000 0000 0000 0000 0000,用十六進(jìn)制表示為3FE00000H。+19 = +10011B =
26、+1.0011B × 24,故階碼為4+127 = 10000011B, 數(shù)符為0,尾數(shù)為1.001100,所以+19表示為0 10000011 001 1000 0000 0000 0000 0000,用十六進(jìn)制表示為41980000H。1/8 = 0.125 = 0.001B = 1.0 × 23,階碼為3+127 = 01111100B,數(shù)符為1,尾數(shù)為1.00,所以1/8表示為1 01111100 000 0000 0000 0000 0000 0000,用十六進(jìn)制表示為BE000000H。258=100000010B=1.0000001B × 28, 故
27、階碼為8+127=10000111B, 數(shù)符為0,尾數(shù)為1.0000001,所以258表示為0 10000111 000 0001 0000 0000 0000 0000,用十六進(jìn)制表示為43810000H。13設(shè)一個(gè)變量的值為4098,要求分別用32位補(bǔ)碼整數(shù)和IEEE 754單精度浮點(diǎn)格式表示該變量(結(jié)果用十六進(jìn)制表示),并說明哪段二進(jìn)制序列在兩種表示中完全相同,為什么會(huì)相同?參考答案:4098 = +1 0000 0000 0010B = +1. 0000 0000 001 × 212 32位2-補(bǔ)碼形式為:0000 0000 0000 0000 0001 0000 0000
28、0010 (00001002H)IEEE754單精度格式為:0 10001011 0000 0000 0010 0000 0000 000 (45801000H) 粗體部分為除隱藏位外的有效數(shù)字,因此,在兩種表示中是相同的序列。14設(shè)一個(gè)變量的值為2147483647,要求分別用32位補(bǔ)碼整數(shù)和IEEE754單精度浮點(diǎn)格式表示該變量(結(jié)果用十六進(jìn)制表示),并說明哪種表示其值完全精確,哪種表示的是近似值。參考答案:2147483647 = 111 1111 1111 1111 1111 1111 1111 1111B= 1.11 1111 1111 1111 1111 1111 1111 111
29、1 × 230 32位2-補(bǔ)碼形式為:1000 0000 0000 0000 0000 0000 0000 0001 (80000001H)IEEE 754單精度格式為:1 10011101 1111 1111 1111 1111 1111 111 (CEFFFFFFH) 32位2-補(bǔ)碼形式能表示精確的值,而浮點(diǎn)數(shù)表示的是近似值,低位被截?cái)?5下表給出了有關(guān)IEEE 754浮點(diǎn)格式表示中一些重要數(shù)據(jù)的取值,表中已經(jīng)有最大規(guī)格化數(shù)的相應(yīng)內(nèi)容,要求填入其他浮點(diǎn)數(shù)的相應(yīng)內(nèi)容。(注:表中a代表一個(gè)在1到10之間的正純小數(shù))項(xiàng)目階碼尾數(shù)單精度雙精度以2的冪次表示的值以10的冪次表示的值以2的冪
30、次表示的值以10的冪次表示的值01最大規(guī)格化數(shù)最小規(guī)格化數(shù)最大非規(guī)格化數(shù)最小非規(guī)格化數(shù)+NaN00000000011111111111111000000001000000000000000011111111111111110.000.001110.001110010.00非全001(2223)×21271.0×2126(1223)×2126223×2126=214901a×1038a×1038a×1038a×104401(2252)×210231.0×21022(1252)×21022
31、252×2102201a×10308a×10308a×10308a×10?16已知下列字符編碼:A=100 0001,a=110 0001,0=011 0000,求E、e、f、7、G、Z、5的7位ACSII碼和第一位前加入奇校驗(yàn)位后的8位編碼。參考答案:E的ASCII碼為 A + (E A) = 100 0001 + 100 = 100 0101, 奇校驗(yàn)位P = 0,第一位前加入奇校驗(yàn)位后的8位編碼是0 100 0101。e的ASCII碼為a+ (e a) = 110 0001 + 100 = 110 0101, 奇校驗(yàn)位P = 1, 第一位
32、前加入奇校驗(yàn)位后的8位編碼是1 110 0101。f的ASCII碼為a+ (f a) = 110 0001 + 101 = 110 0110, 奇校驗(yàn)位P = 1, 第一位前加入奇校驗(yàn)位后的8位編碼是 1 110 0110。7的ASCII碼為0+ (7 - 0) = 011 0000 + 111 = 011 0111,奇校驗(yàn)位P = 0, 第一位前加入奇校驗(yàn)位后的8位編碼是0 011 0111。G的ASCII碼為A+ (G A) = 100 0001 + 0110 = 100 0111, 奇校驗(yàn)位P = 1, 第一位前加入奇校驗(yàn)位后的8位編碼是1 100 0111。Z的ASCII碼為A+(Z
33、A) = 100 0001 + 11001 = 101 1010, 奇校驗(yàn)位P = 1, 第一位前加入奇校驗(yàn)位后的8位編碼是 1 101 1010。5的ASCII碼為0+(5 0) = 011 0000 + 101 = 011 0101, 奇校驗(yàn)位P = 1, 第一位前加入奇校驗(yàn)位后的8位編碼是 1 011 0101。17假定在一個(gè)程序中定義了變量x、y和i,其中,x和y是float型變量(用IEEE754單精度浮點(diǎn)數(shù)表示),i是16位short型變量(用補(bǔ)碼表示)。程序執(zhí)行到某一時(shí)刻,x = 0.125、y=7.5、i=100,它們都被寫到了主存(按字節(jié)編址),其地址分別是100,108和1
34、12。請(qǐng)分別畫出在大端機(jī)器和小端機(jī)器上變量x、y和i在內(nèi)存的存放位置。參考答案:0.125 = 0.001B = 1.0 × 2-3x在機(jī)器內(nèi)部的機(jī)器數(shù)為:1 01111100 000 (BE00 0000H)7.5= +111.1B= +1.111 × 22y在機(jī)器內(nèi)部的機(jī)器數(shù)為:0 10000001 111000 (40F0 0000H)100=64+32+4=1100100Bi在機(jī)器內(nèi)部表示的機(jī)器數(shù)為:0000 0000 0110 0100(0064H)大端機(jī) 小端機(jī)地址內(nèi)容 內(nèi)容100BEH00H10100H00H10200H00H10300HBEH10840H00
35、H109F0H 00H11000HF0H11100H40H11200H64H11364H00H18假定某計(jì)算機(jī)的總線采用奇校驗(yàn),每8位數(shù)據(jù)有一位校驗(yàn)位,若在32位數(shù)據(jù)線上傳輸?shù)男畔⑹?F 3C AB 96H,則對(duì)應(yīng)的4個(gè)校驗(yàn)位應(yīng)為什么?若接受方收到的數(shù)據(jù)信息和校驗(yàn)位分別為87 3C AB 96H和0101B,則說明發(fā)生了什么情況,并給出驗(yàn)證過程。 參考答案: 傳輸信息8F 3C AB 96H展開為1000 1111 0011 1100 1010 1011 1001 0110,每8位有一個(gè)奇校驗(yàn)位,因此,總線上發(fā)送方送出的4個(gè)校驗(yàn)位應(yīng)該分別為0、1、0、1。 接受方的數(shù)據(jù)信息為87 3C AB
36、96H,展開后為1000 0111 0011 1100 1010 1011 1001 0110;接收到的校驗(yàn)位分別為0、1、0、1。在接受方進(jìn)行校驗(yàn)判斷如下: 根據(jù)接收到的數(shù)據(jù)信息計(jì)算出4個(gè)奇校驗(yàn)位分別為1、1、0、1,將該4位校驗(yàn)位分別和接收到的4位校驗(yàn)位進(jìn)行異或,得到1、0、0、0,說明數(shù)據(jù)信息的第一個(gè)字節(jié)發(fā)生傳輸錯(cuò)誤。對(duì)照傳輸前、后的數(shù)據(jù)信息,第一字節(jié)8FH變成了87H,說明確實(shí)發(fā)生了傳輸錯(cuò)誤,驗(yàn)證正確。 19寫出16位數(shù)據(jù)的SEC碼。假定數(shù)據(jù)為0101 0001 0100 0110,說明SEC碼如何正確檢測數(shù)據(jù)位5的錯(cuò)誤。參考答案:對(duì)于16位數(shù)據(jù), 可以如下插入校驗(yàn)位:M16 M15
37、M14 M13 M12 P5 M11 M10 M9 M8 M7 M6 M5 P4 M4 M3 M2 P3 M1 P2 P1其中Mi是原信息數(shù)據(jù), Pi是加入的校驗(yàn)位, 對(duì)于各個(gè)校驗(yàn)位的值可以如下計(jì)算P1 = M1M2M3M4M5M7M9M11M12M14M16 = 1P2 = M1M3M4M6M7M10M11M13M14 = 1P3 = M2M3M4M8M9M10M11M15M16 = 0P4 = M5M6M7M8M9M10M11 = 0P5 = M12M13M14M15M16 = 0所以此時(shí)P5 P4 P3 P2 P1 = 00011,第五位數(shù)據(jù)出錯(cuò)時(shí),數(shù)據(jù)字變?yōu)椋?101 0001 010
38、1 0110,P5P4P3P2P1= 01010,故障字 = 0001101010 = 01001,說明碼字第9位出錯(cuò),即M5出錯(cuò)。20假設(shè)要傳送的數(shù)據(jù)信息為:100011,若約定的生成多項(xiàng)式為:G(x)= x3+1,則校驗(yàn)碼為多少?假定在接收端接收到的數(shù)據(jù)信息為100010,說明如何正確檢測其錯(cuò)誤,寫出檢測過程。參考答案:原數(shù)據(jù)信息為100011,對(duì)應(yīng)的報(bào)文多項(xiàng)式為M(x) = x5 + x + 1, 生成多項(xiàng)式的位數(shù)為4位, 所以在原數(shù)據(jù)信息后面添加3個(gè)0,變?yōu)镸(x) = x3M(x) = x8 + x4 + x3, 用M(x)去模2除G(x),得到的余數(shù)為111, 所以得到CRC碼為1
39、00011 111。檢測時(shí), 用接收到的CRC碼去模2除生成多項(xiàng)式1001,若得到的余數(shù)為0,則表明正確,否則說明傳輸時(shí)發(fā)生了錯(cuò)誤。此題中接收到的CRC碼為100010 111(即數(shù)據(jù)100010加檢驗(yàn)位111),顯然,用100010 111 模2除 1001,得到余數(shù)為001,不為0,說明傳輸時(shí)發(fā)生錯(cuò)誤。第 3 章 習(xí) 題 答 案2(4)高級(jí)語言中的運(yùn)算和機(jī)器語言(即指令)中的運(yùn)算是什么關(guān)系?假定某一個(gè)高級(jí)語言源程序P中有乘、除運(yùn)算,但機(jī)器M中不提供乘、除運(yùn)算指令,則程序P能否在機(jī)器M上運(yùn)行?為什么?參考答案:(略)3考慮以下C語言程序代碼:int func1(unsigned word)r
40、eturn (int) ( word <<24) >> 24);int func2(unsigned word)return ( (int) word <<24 ) >> 24;假設(shè)在一個(gè)32位機(jī)器上執(zhí)行這些函數(shù),該機(jī)器使用二進(jìn)制補(bǔ)碼表示帶符號(hào)整數(shù)。無符號(hào)數(shù)采用邏輯移位,帶符號(hào)整數(shù)采用算術(shù)移位。請(qǐng)?zhí)顚懴卤恚⒄f明函數(shù)func1和func2的功能。Wfunc1(w)func2(w)機(jī)器數(shù)值機(jī)器數(shù)值機(jī)器數(shù)值0000 007FH1270000 007FH+1270000 007FH+1270000 0080H1280000 0080H+128FFFF
41、FF80H1280000 00FFH2550000 00FFH+255FFFF FFFFH10000 0100H2560000 0000H00000 0000H0函數(shù)func1的功能是把無符號(hào)數(shù)高24位清零(左移24位再邏輯右移24位),結(jié)果一定是正的有符號(hào)數(shù);而函數(shù)func2的功能是把無符號(hào)數(shù)的高24位都變成和第25位一樣,因?yàn)樽笠?4位后進(jìn)行算術(shù)右移,高24位補(bǔ)符號(hào)位(即第25位)。4填寫下表,注意對(duì)比無符號(hào)數(shù)和帶符號(hào)整數(shù)的乘法結(jié)果,以及截?cái)嗖僮髑?、后的結(jié)果。模式xyx×y(截?cái)嗲埃﹛×y(截?cái)嗪螅C(jī)器數(shù)值機(jī)器數(shù)值機(jī)器數(shù)值機(jī)器數(shù)值無符號(hào)數(shù)1106010200110012
42、1004二進(jìn)制補(bǔ)碼1102010+211110041004無符號(hào)數(shù)0011111700011171117二進(jìn)制補(bǔ)碼001+1111111111111111無符號(hào)數(shù)11171117110001490011二進(jìn)制補(bǔ)碼11111111000001+1001+15以下是兩段C語言代碼,函數(shù)arith( )是直接用C語言寫的,而optarith( )是對(duì)arith( )函數(shù)以某個(gè)確定的M和N編譯生成的機(jī)器代碼反編譯生成的。根據(jù)optarith( ),可以推斷函數(shù)arith( ) 中M和N的值各是多少?#define M #define N int arith(int x, int y)int resul
43、t = 0 ;result = x*M + y/N; return result;int optarith ( int x, int y)int t = x;x << = 4;x - = t;if ( y < 0 ) y += 3;y>>2;return x+y;參考答案:可以看出x*M和“int t = x; x << = 4;x-=t;”三句對(duì)應(yīng),這些語句實(shí)現(xiàn)了x乘15的功能(左移4位相當(dāng)于乘以16,然后再減1),因此,M等于15;y/N與“if ( y < 0 ) y += 3; y>>2;”兩句對(duì)應(yīng),功能主要由第二句“y右移2
44、位”實(shí)現(xiàn),它實(shí)現(xiàn)了y除以4的功能,因此N是4。而第一句“if ( y < 0 ) y += 3;”主要用于對(duì)y=1時(shí)進(jìn)行調(diào)整,若不調(diào)整,則1>>2=1而1/4=0,兩者不等;調(diào)整后 1+3=2,2>>2=0,兩者相等。思考:能否把 if ( y < 0 ) y += 3; 改成 if ( y < 0 ) y += 2; ?不能!因?yàn)閥 = - 4時(shí)不正確。6設(shè)A4A1和B4B1分別是四位加法器的兩組輸入,C0為低位來的進(jìn)位。當(dāng)加法器分別采用串行進(jìn)位和先行進(jìn)位時(shí),寫出四個(gè)進(jìn)位C4 C1的邏輯表達(dá)式。參考答案:串行進(jìn)位:C1 = X1C0+Y1C0 + X
45、1 Y1 C2 = X2C1+Y2C1 + X2 Y2 C3 = X3C2+Y3C2 + X3 Y3 C4 = X4C3+Y4C3 + X4 Y4 并行進(jìn)位:C1 = X1Y1 + (X1+Y1)C0C2 = X2Y2 + (X2 +Y2) X1Y1 + (X2+Y2) (X1+Y1)C0C3 = X3Y3 + (X3 + Y3) X2Y2 + (X3 + Y3) (X2 + Y2) X1Y1 + (X3 + Y3) (X2 + Y2)(X1 + Y1)C0C4=X4Y4+(X4+Y4)X3Y3+(X4+Y4)(X3+Y3)X2Y2+(X4+Y4)(X3+Y3)(X2+Y2)X1Y1+(X4+
46、Y4)(X3+Y3) (X2+Y2)(X1+Y1)C07用SN74181和SN74182器件設(shè)計(jì)一個(gè)16位先行進(jìn)位補(bǔ)碼加/減運(yùn)算器,畫出運(yùn)算器的邏輯框圖,并給出零標(biāo)志、進(jìn)位標(biāo)志、溢出標(biāo)志、符號(hào)標(biāo)志的生成電路。參考答案(圖略):邏輯框圖參見教材中的圖3.15和圖3.16,將兩個(gè)圖結(jié)合起來即可,也即只要將圖3.15中的B輸入端的每一位Bi取反,得到Bi,和原碼Bi一起送到一個(gè)二路選擇器,由進(jìn)位C0作為選擇控制信號(hào)。當(dāng)C0為1時(shí)做減法,此時(shí),選擇將Bi作為SN74181的B輸入端;否則,當(dāng)C0為1時(shí),做加法。零標(biāo)志ZF、進(jìn)位標(biāo)志CF、溢出標(biāo)志OF、符號(hào)標(biāo)志SF的邏輯電路根據(jù)以下邏輯表達(dá)式畫出即可。Z
47、F=F15+F14+F13+F12+F11+F10+F9+F8+F7+F6+F5+F4+F3+F2+F1+F0CF=C16OF= C0(A15B15F15 + A15B15F15)+ C0(A15B15F15 + A15B15F15)SF= F158 用SN74181和SN74182器件設(shè)計(jì)一個(gè)32位的ALU,要求采用兩級(jí)先行進(jìn)位結(jié)構(gòu)。(1) 寫出所需的SN74181和SN74182芯片數(shù)。(2) 畫出32位ALU的邏輯結(jié)構(gòu)圖。參考答案(圖略): 將如圖3.15所示的兩個(gè)16位ALU級(jí)聯(lián)起來即可,級(jí)聯(lián)時(shí),低16位ALU的高位進(jìn)位C16作為高16位ALU的低位進(jìn)位C0,因此,只要用8片SN741
48、81和2片SN74182。9已知x = 10,y = 6,采用6位機(jī)器數(shù)表示。請(qǐng)按如下要求計(jì)算,并把結(jié)果還原成真值。(1) 求x+y補(bǔ),xy補(bǔ)。(2) 用原碼一位乘法計(jì)算x×y原。(3) 用MBA(基4布斯)乘法計(jì)算x×y補(bǔ)。(4) 用不恢復(fù)余數(shù)法計(jì)算x/y原的商和余數(shù)。(5) 用不恢復(fù)余數(shù)法計(jì)算x/y補(bǔ)的商和余數(shù)。參考答案:10補(bǔ) = 001010 6補(bǔ) = 111010 6補(bǔ) = 000110 10原 = 001010 6原 = 100110 (1) 10+( 6)補(bǔ)= 10補(bǔ)+ 6補(bǔ)= 001010+111010 = 000100 (+4) 10(6)補(bǔ)
49、= 10補(bǔ)+ (6)補(bǔ) = 001010+000110 = 010000 (+16) (2) 先采用無符號(hào)數(shù)乘法計(jì)算001010× 000110的乘積,原碼一位乘法過程(前面兩個(gè)0省略)如下: C P Y 說明 0 0 0 0 0 0 1 1 0 P0 = 0 + 0 0 0 0 y4 = 0,+0 0 0 0 0 0 C, P 和Y同時(shí)右移一位 0 0 0 0 0 0 0 1 1 得P1+ 1 0 1 0 y3 = 1,+X 0 1 0 1 0 C, P 和Y同時(shí)右移一位 0 0 1 0 1 0 0 0 1 得P2 + 1 0 1 0 y2 = 1,+X 0 1 1 1 1 0 0
50、 0 0 C, P 和Y同時(shí)右移一位 0 0 1 1 1 1 0 0 0 得P3 + 0 0 0 0 y1 = 0,+0 0 0 1 1 1 C, P 和Y同時(shí)右移一位 0 0 0 1 1 1 1 0 0 得P4 若兩個(gè)6位數(shù)相乘的話,則還要右移兩次,得 000000 111100符號(hào)位為:0 Å 1 = 1,因此,X×Y原 = 1000 0011 1100即X × Y = 11 1100B = 60(3) 10補(bǔ) = 110110,布斯乘法過程如下: P Y y-1 說明 0 0 0 0 0 0 1 1 1 0 1 0 0 設(shè)y-1 = 0,P0補(bǔ) = 0 y0 y-1 = 00,P、Y直接右移一位0 0 0 0 0 0 0 1 1 1 0 1 0 得P1補(bǔ)+ 1 1 0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年健身身體柔軟訓(xùn)練合同
- 房地產(chǎn)信托與資產(chǎn)管理
- 個(gè)人交易汽車買賣合同(2024版)3篇
- 二零二五年度承包工地食堂綠色環(huán)保餐具租賃合同3篇
- 2025年國投健康產(chǎn)業(yè)投資有限公司招聘筆試參考題庫含答案解析
- 2025年中遠(yuǎn)海運(yùn)港口武漢有限公司招聘筆試參考題庫含答案解析
- 2025年江西鷹潭華潤燃?xì)庥邢薰菊衅腹P試參考題庫含答案解析
- 2025年安徽宿州市泗縣虹誠工業(yè)投資有限責(zé)任公司招聘筆試參考題庫附帶答案詳解
- 二零二五版老舊小區(qū)改造裝修勞務(wù)分包合同2篇
- 2025年仁愛科普版六年級(jí)語文上冊(cè)階段測試試卷含答案
- 充電樁項(xiàng)目運(yùn)營方案
- 退休人員出國探親申請(qǐng)書
- 傷殘撫恤管理辦法實(shí)施細(xì)則
- 高中物理競賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- 西方經(jīng)濟(jì)學(xué)-高鴻業(yè)-筆記
- 幼兒園美術(shù)教育研究策略國內(nèi)外
- 高中英語選擇性必修一單詞表
- 物業(yè)公司介紹
- 2024屆河南省五市高三第一次聯(lián)考英語試題及答案
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
- 孕婦學(xué)校品管圈課件
評(píng)論
0/150
提交評(píng)論