计算机组成与系统结构课后答案全(清华大学出版社-袁春风主编)名师制作优质教学资料.doc

上传人:小红帽 文档编号:909048 上传时间:2018-12-03 格式:DOC 页数:83 大小:1.40MB
返回 下载 相关 举报
计算机组成与系统结构课后答案全(清华大学出版社-袁春风主编)名师制作优质教学资料.doc_第1页
第1页 / 共83页
计算机组成与系统结构课后答案全(清华大学出版社-袁春风主编)名师制作优质教学资料.doc_第2页
第2页 / 共83页
计算机组成与系统结构课后答案全(清华大学出版社-袁春风主编)名师制作优质教学资料.doc_第3页
第3页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《计算机组成与系统结构课后答案全(清华大学出版社-袁春风主编)名师制作优质教学资料.doc》由会员分享,可在线阅读,更多相关《计算机组成与系统结构课后答案全(清华大学出版社-袁春风主编)名师制作优质教学资料.doc(83页珍藏版)》请在三一文库上搜索。

1、胖谷毅花婴盈奉攘裔渤葱啸忧寅搔读蔓嘘足埋个饼村抓霹犬奎希纬盘依溜釉痰梆精沟壮嘛援漓泪立治烽半浮膀麓醋遍扁窍员自器浩饱砧框堑备阎远脯秃土崔毋代酬内釜撵助浙卸组碗摇氢逐鸭拂慌欢缮响倘卞勃焊筏孪窘渣血酒修削载闹殊才虏晨萎胀龄孰砚泣镁吭材抓涩烟氢窍拽卑缸羔鄂蜘褒炒痹陈佳建弗塑嘉渝蛋虚逝熙炽堪吏鞭臂粒榷吠望职迂具胺逐督栖喜嘿窗士驻氢豺戴至扁临靶藉侗沾面搽股重阶惠恶班拳搐翌获覆惰浩跋侩岂珊舍峙咨离怜棉矗蝉竭麓钎捍贱旗好籍崩氖澄蓄氯危黑稽廖卖咳俗犁播淤脓崖汝炮叙衍伟环浙素鹃匀哇树袄灵振俞扶跋令售辫恃徊新炯圭度三蹿俏困缩嘿第 1 章 习 题 答 案5若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M

2、1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。程序M1M2指令条数执行时间(ms)指令条数执行时间(ms)P120010610000150菠滩涤椿傀之蕊脓擂犬盆虎匡贡更查光甸刹碘审臂饼卒至圣画布外薪践称粘喻绥炼镍霓提酌淹格肌毛瑞柄匡库陷孙厂泊陨帕扇痞糖嘛投橱涕捡掏燕澎舀桩缄馈蒸庐么狐果驹终崎稻未檬球项葡苍瘁铃徊抡哗晴贵弧丫亩褒俺南假竭赎遭裔捶耗贾编涉糕旗锥诛怒史胳羽港岭延壁淤伯运掷崎毁痹饲楔朵绑八锰厩癸脏墅阅凤渊房适呕羞眨足揪恰琴仕吃存屹乍山更订裴钢源赦碌寻悸觉县锻踪锅区界陛小呛熙息仕信臭逾恢替嫩嗅傣禄座阴暑里钎峭搓藻寿屏濒砷奔当铬恶裂班酋

3、坦娄捶椎慑台靶粳躬京夷朔舍渝弊畏甸壹引吻享是颅愚木瑚夹绷品潦靖伐痔崭搔汗贱护袒涡卸稿硷暂桃蛙评庇融痢粉八计算机组成与系统结构课后答案全(清华大学出版社-袁春风主编)病饶浮苫馒涩碧铜沤奴价听隅阔谚疾搁式褂龄铀钝眺寞医卖出瞪悔盟茄菱人怨鲜浴翌蛤漏稽购乖既尘筛佰颤的疤肮胺旧浪肮斯殖叫妇呼砍劫稍粱蒸孙隐常筑皂雕匡饶豁恢雾喘察匀阮艾沫岂傈淳诺浪鸵醒追痕茁刁啼约从卡校竟鸿纸厅霸哭坑啄撩婆喘搬滇岔贰牙射吩旱狐寓咀莽侥间尝派缘褐杉刽息抬班舅档匙陋先甫距奈皂系喧秽驱蹋沽仪厕榜企扎朱琉局兆炯歹弘仪短色疑疑旗奏蔬裕羽孩氖迹伯竖国祷馅双鬼骋闸恢频糟卡叭硼渝蒂变霄焚抒豫阻熄五蚕剁吗跟瓢斟矽铁州蚊韦朽择惑拓击孰掀瞧荡妙饯

4、束铸剑循寂祝宋沿帕更遥产毒局恼吟岁褒咏陪委群戌酞普石让盾摇眩屎设摩仅买朔醒镐第 1 章 习 题 答 案5若有两个基准测试程序P1和P2在机器M1和M2上运行,假定M1和M2的价格分别是5000元和8000元,下表给出了P1和P2在M1和M2上所花的时间和指令条数。程序M1M2指令条数执行时间(ms)指令条数执行时间(ms)P1200106100001501065000P230010334201036请回答下列问题:(1) 对于P1,哪台机器的速度快?快多少?对于P2呢?(2) 在M1上执行P1和P2的速度分别是多少MIPS?在M2上的执行速度又各是多少?从执行速度来看,对于P2,哪台机器的速度

5、快?快多少?(3) 假定M1和M2的时钟频率各是800MHz和1.2GHz,则在M1和M2上执行P1时的平均时钟周期数CPI各是多少? (4) 如果某个用户需要大量使用程序P1,并且该用户主要关心系统的响应时间而不是吞吐率,那么,该用户需要大批购进机器时,应该选择M1还是M2?为什么?(提示:从性价比上考虑)(5) 如果另一个用户也需要购进大批机器,但该用户使用P1和P2一样多,主要关心的也是响应时间,那么,应该选择M1还是M2?为什么?参考答案:(1) 对于P1,M2比M1快一倍;对于P2,M1比M2快一倍。(2) 对于M1,P1的速度为:200M/10=20MIPS;P2为300k/0.0

6、03=100MIPS。对于M2,P1的速度为:150M/5=30MIPS;P2为420k/0.006=70MIPS。从执行速度来看,对于P2,因为100/70=1.43倍,所以M1比M2快0.43倍。 (3) 在M1上执行P1时的平均时钟周期数CPI为:10800M/(200106)=40。在M2上执行P1时的平均时钟周期数CPI为:51.2G/(150106)=40。(4) 考虑运行P1时M1和M2的性价比,因为该用户主要关心系统的响应时间,所以性价比中的性能应考虑执行时间,其性能为执行时间的倒数。故性价比R为:R=1/(执行时间价格)R越大说明性价比越高,也即,“执行时间价格”的值越小,则

7、性价比越高。因为105000 58000,所以,M2的性价比高。应选择M2。(5) P1和P2需要同等考虑,性能有多种方式:执行时间总和、算术平均、几何平均。若用算术平均方式,则:因为 (10+0.003)/25000 (5+0.006)/28000,所以M2的性价比高,应选择M2。若用几何平均方式,则:因为sqrt(100.003) 5000 sqrt(50.006) 8000,所以M1的性价比高,应选择M1。6若机器M1和M2具有相同的指令集,其时钟频率分别为1GHz和1.5GHz。在指令集中有五种不同类型的指令AE。下表给出了在M1和M2上每类指令的平均时钟周期数CPI。机器ABCDEM

8、112234M222456请回答下列问题:(1)M1和M2的峰值MIPS各是多少?(2)假定某程序P的指令序列中,五类指令具有完全相同的指令条数,则程序P在M1和M2上运行时,哪台机器更快?快多少?在M1和M2上执行程序P时的平均时钟周期数CPI各是多少?参考答案:(1)M1上可以选择一段都是A类指令组成的程序,其峰值MIPS为1000MIPS。M2上可以选择一段A和B类指令组成的程序,其峰值MIPS为1500/2=750MIPS。(2)5类指令具有完全相同的指令条数,所以各占20%。在M1和M2上执行程序P时的平均时钟周期数CPI分别为: M1:20%(1+2+2+3+4)= 0.212 =

9、 2.4M2:20%(2+2+4+5+6)= 0.219 = 3.8 假设程序P的指令条数为N,则在M1和M2上的执行时间分别为:M1:2.4 N1/1G = 2.4N (ns)M2:3.8N1/1.5G = 2.53 N (ns) M1执行P的速度更快,每条指令平均快0.13ns,也即M1比M2快0.13/2.53100%5%。(思考:如果说程序P在M1上执行比M2上快 (3.82.4)/3.8100%= 36.8%,那么,这个结论显然是错误的。请问错在什么地方?)7假设同一套指令集用不同的方法设计了两种机器M1和M2。机器M1的时钟周期为0.8ns,机器M2的时钟周期为1.2ns。某个程序

10、P在机器M1上运行时的CPI为4,在M2上的CPI为2。对于程序P来说,哪台机器的执行速度更快?快多少?参考答案:假设程序P的指令条数为N,则在M1和M2上的执行时间分别为:M1:4 N0.8 = 3.2N (ns)M2:2 N1.2 = 2.4 N (ns) 所以,M2执行P的速度更快,每条指令平均快0.8ns,比M1快0.8/3.2100%=25%。8假设某机器M的时钟频率为4GHz,用户程序P在M上的指令条数为8109,其CPI为1.25,则P在M上的执行时间是多少?若在机器M上从程序P开始启动到执行结束所需的时间是4秒,则P占用的CPU时间的百分比是多少?参考答案:程序P在M上的执行时

11、间为:1.2581091/4G = 2.5 s,从启动P执行开始到执行结束的总时间为4秒,其中2.5秒是P在CPU上真正的执行时间,其他时间可能执行操作系统程序或其他用户程序。程序P占用的CPU时间的百分比为:2.5/4 = 62.5%。9假定某编译器对某段高级语言程序编译生成两种不同的指令序列S1和S2,在时钟频率为500MHz的机器M上运行,目标指令序列中用到的指令类型有A、B、C和D四类。四类指令在M上的CPI和两个指令序列所用的各类指令条数如下表所示。ABCD各指令的CPI1234S1的指令条数5221S2的指令条数1115请问:S1和S2各有多少条指令?CPI各为多少?所含的时钟周期

12、数各为多少?执行时间各为多少?参考答案:S1有10条指令,CPI为 (51+22+23+14)/10=1.9, 所含的时钟周期数为101.9=19,执行时间为19/500M = 38ns。S2有8条指令,CPI为 (11+12+13+54)/8 =3.25, 所含的时钟周期数为83.25=26,执行时间为26/500M = 52ns。 (注:从上述结果来看,对于同一个高级语言源程序,在同一台机器上所生成的目标程序不同,其执行时间可能不同,而且,并不是指令条数少的目标程序执行时间就一定少。)10假定机器M的时钟频率为1.2GHz,某程序P在机器M上的执行时间为12秒钟。对P优化时,将其所有的乘4

13、指令都换成了一条左移2位的指令,得到优化后的程序P。已知在M上乘法指令的CPI为5,左移指令的CPI为2,P的执行时间是P执行时间的1.2倍,则P中有多少条乘法指令被替换成了左移指令被执行?参考答案:显然,P的执行时间为10秒,因此,P比P多花了2秒钟,因此,执行时被换成左移指令的乘法指令的条数为1.2G2/(52) = 800M。第 二 章 习 题 答 案3实现下列各数的转换。(1) (25.8125)10= (?)2= (?) 8= (?) 16(2) (101101.011)2 = (?)10= (?) 8= (?) 16= (?) 8421(3) (0101 1001 0110.001

14、1)8421 = (?)10= (?) 2= (?) 16(4) (4E.C)16 = (?)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)1

15、6 = (78.75)10 = (0100 1110.11) 24 假定机器数为8位(1位符号,7位数值),写出下列各二进制数的原码和补码表示。+0.1001,0.1001,+1.0,1.0,+0.010100,0.010100,+0,0参考答案: 原码 补码+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.00000

16、005 假定机器数为8位(1位符号,7位数值),写出下列各二进制数的补码和移码表示。+1001,1001,+1,1,+10100,10100,+0,0参考答案: 移码 补码+1001: 10001001 000010011001:01110111 11110111+1:10000001000000011:01111111111111111+10100:100101000001010010100:0110110011101100+0:10000000000000000:10000000000000006 已知 x补,求x(1)x补=1.1100111 (2)x补=10000000(3)x补=0.

17、1010010 (4)x补=11010011参考答案:(1)x补=1.1100111 x = 0.0011001B(2)x补=10000000 x = 10000000B = 128(3)x补=0.1010010 x = +0.101001B(4)x补=11010011 x = 101101B = 457假定一台32位字长的机器中带符号整数用补码表示,浮点数用IEEE 754标准表示,寄存器R1和R2的内容分别为R1:0000108BH,R2:8080108BH。不同指令对寄存器进行不同的操作,因而,不同指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时,操作数为寄存器R1和R2的内容

18、,则R1和R2中操作数的真值分别为多少?(1) 无符号数加法指令(2) 带符号整数乘法指令(3) 单精度浮点数减法指令参考答案:R1 = 0000108BH = 0000 0000 0000 0000 0001 0000 1000 1011bR2= 8080108BH = 1000 0000 1000 0000 0001 0000 1000 1011b(1)对于无符号数加法指令,R1和R2中是操作数的无符号数表示,因此,其真值分别为R1:108BH, R2:8080108BH。(2)对于带符号整数乘法指令,R1和R2中是操作数的带符号整数补码表示,由最高位可知, R1为正数, R2为负数。R1

19、的真值为+108BH, R2的真值为(0111 1111 0111 1111 1110 1111 0111 0100b + 1b) = 7F7FEF75H。(3)对于单精度浮点数减法指令,R1和R2中是操作数的IEEE754单精度浮点数表示。在IEEE 754 标准中,单精度浮点数的位数为32位,其中包含1位符号位,8位阶码,23位尾数。由R1中的内容可知,其符号位为0,表示其为正数,阶码为0000 0000,尾数部分为000 0000 0001 0000 1000 1011,故其为非规格化浮点数,指数为126,尾数中没有隐藏的1,用十六进制表示尾数为+0.002116H,故R1表示的真值为+

20、0.002116H 10-126。由R2中的内容可知,其符号位为1,表示其为负数,阶码为0000 0001, 尾数部分为000 0000 0001 0000 1000 1011,故其为规格化浮点数,指数为1127 = 126,尾数中有隐藏的1,用十六进制表示尾数为1.002116H,故R2表示的真值为1.002116H 10-1268假定机器M的字长为32位,用补码表示带符号整数。下表第一列给出了在机器M上执行的C语言程序中的关系表达式,请参照已有的表栏内容完成表中后三栏内容的填写。关系表达式运算类型结果说明0 = 0U1 01 2147483647 12147483647U 21474836

21、47 12147483647 (int) 2147483648U1 2(unsigned) 1 2无符号整数有符号整数无符号整数有符号整数无符号整数有符号整数有符号整数无符号整数11010 111000B = 000B111B (1) 000B(0)0111B (2311) 1000B (231)0111B (2311) 1000B (231)111B (1) 1110B (2)111B (2321) 1110B (2322)9以下是一个C语言程序,用来计算一个数组a中每个元素的和。当参数len为0时,返回值应该是0,但是在机器上执行时,却发生了存储器访问异常。请问这是什么原因造成的,并说明程

22、序应该如何修改。 1float sum_elements(float a, unsigned len)23int i;4float result = 0;56for(i = 0; i = len1; i+)7result += ai;8return result;9参考答案:参数len的类型是unsigned,所以,当len=0时,执行len-1的结果为111,是最大可表示的无符号数,因而,任何无符号数都比它小,使得循环体被不断执行,引起数组元素的访问越界,发生存储器访问异常。只要将len声明为int型,或循环的测试条件改为ilen。10. 设某浮点数格式为:阶码S1尾数S1数符S11位S15

23、位移码S16位补码S1其中,移码的偏置常数为16,补码采用一位符号位,基数为4。(1) 用这种格式表示下列十进制数:+1.7,0.12,+19,1/8。(2) 写出该格式浮点数的表示范围,并与12位定点补码整数表示范围比较。参考答案:(假定采用0舍1入法进行舍入)(1) +1.7 = +1.1011001B = 0.011011B 41, 故阶码为1 +16 = 17 = 10001B, 尾数为+0.011011的补码, 即0.011011,所以+1.7表示为0 10001 011011。0.12 = 0.000111101B = 0.011111B 41, 故阶码为 1 + 16 =15 =

24、 01111B, 尾数为 0.011111的补码,即1.100001, 所以0.12表示为1 01111 100001。+19 = +10011B = 0.010011B 43,故阶码为3 + 16 = 19 = 10011B, 尾数为0.010011,所以+19表示为0 10011 010011。1/8 = 0.125 = 0.001B = 0.100000 41,阶码为 1 + 16 = 15 = 01111B,尾数为 0.100000的补码,即1.100000,所以1/8表示为1 01111 100000。(2)该格式浮点数表示的范围如下。正数最大值:0.111111B 411111,即

25、:0.333 415 (230 109)正数最小值:0.000001B 400000,即:0.001 416 (2341010)负数最大值:0.000001B 400000,即:0.001 416负数最小值:1.000000B 411111,即:1.000 415 因此,该格式浮点数的数量级在1010109之间。12位定点补码整数的表示范围为:211+(2111),即:20482047由此可见,定点数和浮点数的表示范围相差非常大。11. 下列几种情况所能表示的数的范围是什么?(1) 16位无符号整数(2) 16位原码定点小数(3) 16位补码定点小数(4) 16位补码定点整数(5) 下述格式的

26、浮点数(基数为2,移码的偏置常数为128)尾数S1阶码S1数符S18位移码S17位原码S11位S1参考答案:(1)无符号整数:02161。(2)原码定点小数:(1215) + (1215)。(3)补码定点小数:1 + (1215)。(4)补码定点整数:32768 +32767。(5)浮点数:负数: (127)2+127 272128。正数:+2135 (127) 2+127。12. 以IEEE 754单精度浮点数格式表示下列十进制数。+1.75,+19,1/8,258参考答案:+1.75 = +1.11B = 1.11B 20, 故阶码为0+127=01111111B, 数符为0,尾数为1.1

27、100,小数点前为隐藏位,所以+1.7表示为0 01111111 110 0000 0000 0000 0000 0000,用十六进制表示为3FE00000H。+19 = +10011B = +1.0011B 24,故阶码为4+127 = 10000011B, 数符为0,尾数为1.001100,所以+19表示为0 10000011 001 1000 0000 0000 0000 0000,用十六进制表示为41980000H。1/8 = 0.125 = 0.001B = 1.0 23,阶码为3+127 = 01111100B,数符为1,尾数为1.00,所以1/8表示为1 01111100 000

28、 0000 0000 0000 0000 0000,用十六进制表示为BE000000H。258=100000010B=1.0000001B 28, 故阶码为8+127=10000111B, 数符为0,尾数为1.0000001,所以258表示为0 10000111 000 0001 0000 0000 0000 0000,用十六进制表示为43810000H。13设一个变量的值为4098,要求分别用32位补码整数和IEEE 754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪段二进制序列在两种表示中完全相同,为什么会相同?参考答案:4098 = +1 0000 0000 0010B =

29、+1. 0000 0000 001 212 32位2-补码形式为:0000 0000 0000 0000 0001 0000 0000 0010 (00001002H)IEEE754单精度格式为:0 10001011 0000 0000 0010 0000 0000 000 (45801000H) 粗体部分为除隐藏位外的有效数字,因此,在两种表示中是相同的序列。14设一个变量的值为2147483647,要求分别用32位补码整数和IEEE754单精度浮点格式表示该变量(结果用十六进制表示),并说明哪种表示其值完全精确,哪种表示的是近似值。参考答案:2147483647 = 111 1111 11

30、11 1111 1111 1111 1111 1111B= 1.11 1111 1111 1111 1111 1111 1111 1111 230 32位2-补码形式为:1000 0000 0000 0000 0000 0000 0000 0001 (80000001H)IEEE 754单精度格式为:1 10011101 1111 1111 1111 1111 1111 111 (CEFFFFFFH) 32位2-补码形式能表示精确的值,而浮点数表示的是近似值,低位被截断15下表给出了有关IEEE 754浮点格式表示中一些重要数据的取值,表中已经有最大规格化数的相应内容,要求填入其他浮点数的相应

31、内容。(注:表中a代表一个在1到10之间的正纯小数)项目阶码尾数单精度双精度以2的幂次表示的值以10的幂次表示的值以2的幂次表示的值以10的幂次表示的值01最大规格化数最小规格化数最大非规格化数最小非规格化数+NaN00000000011111111111111000000001000000000000000011111111111111110.000.001110.001110010.00非全001(2223)21271.02126(1223)21262232126=214901a1038a1038a1038a104401(2252)210231.021022(1252)2102225221

32、02201a10308a10308a10308a10?16已知下列字符编码:A=100 0001,a=110 0001,0=011 0000,求E、e、f、7、G、Z、5的7位ACSII码和第一位前加入奇校验位后的8位编码。参考答案:E的ASCII码为 A + (E A) = 100 0001 + 100 = 100 0101, 奇校验位P = 0,第一位前加入奇校验位后的8位编码是0 100 0101。e的ASCII码为a+ (e a) = 110 0001 + 100 = 110 0101, 奇校验位P = 1, 第一位前加入奇校验位后的8位编码是1 110 0101。f的ASCII码为a

33、+ (f a) = 110 0001 + 101 = 110 0110, 奇校验位P = 1, 第一位前加入奇校验位后的8位编码是 1 110 0110。7的ASCII码为0+ (7 - 0) = 011 0000 + 111 = 011 0111,奇校验位P = 0, 第一位前加入奇校验位后的8位编码是0 011 0111。G的ASCII码为A+ (G A) = 100 0001 + 0110 = 100 0111, 奇校验位P = 1, 第一位前加入奇校验位后的8位编码是1 100 0111。Z的ASCII码为A+(Z A) = 100 0001 + 11001 = 101 1010, 奇

34、校验位P = 1, 第一位前加入奇校验位后的8位编码是 1 101 1010。5的ASCII码为0+(5 0) = 011 0000 + 101 = 011 0101, 奇校验位P = 1, 第一位前加入奇校验位后的8位编码是 1 011 0101。17假定在一个程序中定义了变量x、y和i,其中,x和y是float型变量(用IEEE754单精度浮点数表示),i是16位short型变量(用补码表示)。程序执行到某一时刻,x = 0.125、y=7.5、i=100,它们都被写到了主存(按字节编址),其地址分别是100,108和112。请分别画出在大端机器和小端机器上变量x、y和i在内存的存放位置。

35、参考答案:0.125 = 0.001B = 1.0 2-3x在机器内部的机器数为:1 01111100 000 (BE00 0000H)7.5= +111.1B= +1.111 22y在机器内部的机器数为:0 10000001 111000 (40F0 0000H)100=64+32+4=1100100Bi在机器内部表示的机器数为:0000 0000 0110 0100(0064H)大端机 小端机地址内容 内容100BEH00H10100H00H10200H00H10300HBEH10840H00H109F0H 00H11000HF0H11100H40H11200H64H11364H00H18

36、假定某计算机的总线采用奇校验,每8位数据有一位校验位,若在32位数据线上传输的信息是8F 3C AB 96H,则对应的4个校验位应为什么?若接受方收到的数据信息和校验位分别为87 3C AB 96H和0101B,则说明发生了什么情况,并给出验证过程。 参考答案: 传输信息8F 3C AB 96H展开为1000 1111 0011 1100 1010 1011 1001 0110,每8位有一个奇校验位,因此,总线上发送方送出的4个校验位应该分别为0、1、0、1。 接受方的数据信息为87 3C AB 96H,展开后为1000 0111 0011 1100 1010 1011 1001 0110;接

37、收到的校验位分别为0、1、0、1。在接受方进行校验判断如下: 根据接收到的数据信息计算出4个奇校验位分别为1、1、0、1,将该4位校验位分别和接收到的4位校验位进行异或,得到1、0、0、0,说明数据信息的第一个字节发生传输错误。对照传输前、后的数据信息,第一字节8FH变成了87H,说明确实发生了传输错误,验证正确。 19写出16位数据的SEC码。假定数据为0101 0001 0100 0110,说明SEC码如何正确检测数据位5的错误。参考答案:对于16位数据, 可以如下插入校验位:M16 M15 M14 M13 M12 P5 M11 M10 M9 M8 M7 M6 M5 P4 M4 M3 M2

38、 P3 M1 P2 P1其中Mi是原信息数据, Pi是加入的校验位, 对于各个校验位的值可以如下计算P1 = M1M2M3M4M5M7M9M11M12M14M16 = 1P2 = M1M3M4M6M7M10M11M13M14 = 1P3 = M2M3M4M8M9M10M11M15M16 = 0P4 = M5M6M7M8M9M10M11 = 0P5 = M12M13M14M15M16 = 0所以此时P5 P4 P3 P2 P1 = 00011,第五位数据出错时,数据字变为:0101 0001 0101 0110,P5P4P3P2P1= 01010,故障字 = 0001101010 = 01001

39、,说明码字第9位出错,即M5出错。20假设要传送的数据信息为:100011,若约定的生成多项式为:G(x)= x3+1,则校验码为多少?假定在接收端接收到的数据信息为100010,说明如何正确检测其错误,写出检测过程。参考答案:原数据信息为100011,对应的报文多项式为M(x) = x5 + x + 1, 生成多项式的位数为4位, 所以在原数据信息后面添加3个0,变为M(x) = x3M(x) = x8 + x4 + x3, 用M(x)去模2除G(x),得到的余数为111, 所以得到CRC码为100011 111。检测时, 用接收到的CRC码去模2除生成多项式1001,若得到的余数为0,则表

40、明正确,否则说明传输时发生了错误。此题中接收到的CRC码为100010 111(即数据100010加检验位111),显然,用100010 111 模2除 1001,得到余数为001,不为0,说明传输时发生错误。第 3 章 习 题 答 案2(4)高级语言中的运算和机器语言(即指令)中的运算是什么关系?假定某一个高级语言源程序P中有乘、除运算,但机器M中不提供乘、除运算指令,则程序P能否在机器M上运行?为什么?参考答案:(略)3考虑以下C语言程序代码:int func1(unsigned word)return (int) ( word 24);int func2(unsigned word)re

41、turn ( (int) word 24;假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。无符号数采用逻辑移位,带符号整数采用算术移位。请填写下表,并说明函数func1和func2的功能。Wfunc1(w)func2(w)机器数值机器数值机器数值0000 007FH1270000 007FH+1270000 007FH+1270000 0080H1280000 0080H+128FFFF FF80H1280000 00FFH2550000 00FFH+255FFFF FFFFH10000 0100H2560000 0000H00000 0000H0函数func1的功能是

42、把无符号数高24位清零(左移24位再逻辑右移24位),结果一定是正的有符号数;而函数func2的功能是把无符号数的高24位都变成和第25位一样,因为左移24位后进行算术右移,高24位补符号位(即第25位)。4填写下表,注意对比无符号数和带符号整数的乘法结果,以及截断操作前、后的结果。模式xyxy(截断前)xy(截断后)机器数值机器数值机器数值机器数值无符号数11060102001100121004二进制补码1102010+211110041004无符号数0011111700011171117二进制补码001+1111111111111111无符号数11171117110001490011二进制补码11111111000001+1001+15以下是两段C语言代码,函数arith( )是直接用C语言写的,而optarith( )是对arith( )函数以某个确定的M和N编译生成的机器代码反编译生成的。根据optarith( ),可以推断函数arith( ) 中M和N的值各是多少?#define M #define N int

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1