ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:33.91KB ,
资源ID:14316129      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14316129.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(深入理解计算机系统第二版家庭作业答案Word格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

深入理解计算机系统第二版家庭作业答案Word格式.docx

1、3);2.61A. !xB. !xC. !(x(sizeof(int)-1)1)=2.63对于sra,主要的工作是将xrsl的第w-k-1位扩展到前面的高位。这个可以利用取反加1来实现,不过这里的加1是加1(w-k-1)。如果x的第w-k-1位为0,取反加1后,前面位全为0,如果为1,取反加1后就全是1。最后再使用相应的掩码得到结果。对于srl,注意工作就是将前面的高位清0,即xsra & (1(w-k) - 1)。额外注意k=0时,不能使用1(w-k),于是改用2sra(intk)xsrl =(unsigned)xk;w =sizeof(int) 16);8);4);2);1);x的每个位进

2、行异或,如果为0就说明是偶数个1,如果为1就是奇数个1。那么可以想到折半缩小规模。最后一句也可以是 return (x1)&12.66根据提示想到利用或运算,将最高位的1或到比它低的每一位上,忽然想如果x就是10000000.该如何让每一位都为1。于是便想到了二进扩展。先是x右移1位再和原x进行或,变成1100000.,再让结果右移2位和原结果或,变成11110000.,最后到16位,变成11111111.。leftmost_one(unsigned x)|=x(x2.67A.32位机器上没有定义移位32次。B.beyond_msb变为 231。C.定义 a = 115; a=15; set_

3、msb = a beyond_msb = a2;2.68感觉中文版有点问题,注释和函数有点对应不上,于是用英文版的了。个人猜想应该是让x的最低n位变1。lower_one_mask(intn)(2(n-1)2.69rotate_right(unsigned x,sizeof(unsigned)*8;n)(x(w-n-1)2.70这一题是看x的值是否在 - 2(n-1) 到 2(n-1) - 1之间。如果x满足这个条件,则其第n-1位就是符号位。如果该位为0,则前面的w-n位均为0,如果该位为1,则前面的w-n位均为1。所以本质是判断,x的高w-n+1位是否为0或者为-1。fits_bits(i

4、nt=(n-1);|(x);2.71A.得到的结果是unsigned,而并非扩展为signed的结果。B.使用int,将待抽取字节左移到最高字节,再右移到最低字节即可。xbyte(unsigned word,bytenum)ret = word(3bytenum) 0 & maxbytes = sizeof(val)2.73请先参考2.74题。可知:t = a + b时,如果a,b异号(或者存在0),则肯定不会溢出。如果a,b均大于等于0,则t=0就是负溢出。于是,可以利用三个变量来表示是正溢出,负溢出还是无溢出。saturating_add(inty)sizeof(int)=(w-1);yt

5、pos_ovf =x&y&t;neg_ovf = x&y&t;novf =(pos_ovf|neg_ovf);(pos_ovf & INT_MAX)(novf & ans)(neg_ovf & INT_MIN);2.74对于有符号整数相减,溢出的规则可以总结为:t = a-b;如果a, b 同号,则肯定不会溢出。如果a=0 & b0,则只有当t=0时才算溢出。如果a=0,则只有当t不过,上述t肯定不会等于0,因为当a,b不同号时:1) a!=b,因此a-b不会等于0。2) a-b = abs(a) + abs(b) = abs(TMax) + abs(TMin)=(2w - 1)所以,a,b异

6、号,t,b同号即可判定为溢出。tsub_ovf(int= y) & (y = t);顺便整理一下汇编中CF,OF的设定规则(个人总结,如有不对之处,欢迎指正)。t = a + b;CF: (unsigned t) (unsigned a) 进位标志OF: (a0 = b0) & (t0 != a0)t = a - b;=0) | (a t0) 退位标志= b (b0 = t(w-1);当然,这里用了乘法,不属于整数位级编码规则,聪明的办法是使用int进行移位,并使用与运算。即 (int)x(w-1) & y 和 (int)y x。注:不使用long long来实现signed_high_pro

7、d(int x, int y)是一件比较复杂的工作,而且我不会只使用整数位级编码规则来实现,因为需要使用循环和条件判断。下面的代码是计算两个整数相乘得到的高位和低位。uadd_ok(unsigned x,y= x;voidsigned_prod_result(inty,h,l)h =0;l =(y&1)?x:for(inti=1;ii)&)h+=(unsigned)x(w-i);if(!uadd_ok(l,x(w-1)*y)(y(w-1)*x);最后一步计算之前的h即为unsigned相乘得到的高位。sign_h = unsign_h - (x y) - (y x);sign_h = unsign_h + (x(w-1) * y) + (y(w-1) * x);2.76A. K=5: (x2) + xB. K=9:3) + xC. K=30:5) - (x1)D. K=-56:3) - (xk,再考虑舍入。舍入的条件是x

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1