第一范文网 - 专业文章范例文档资料分享平台

深入理解计算机系统(第二版)-家庭作业答案

来源:用户分享 时间:2025/9/26 1:31:28 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

深入理解计算机系统(第二版) 家庭作业 第二章 2.55-2.57 略 2.58 int is_little_endian(){ int a = 1; return *((char*)&a); } 2.59 (x&0xFF) | (y&~0xFF) 2.60 unsigned replace_byte(unsigned x, unsigned char b, int i) { return (x & ~(0xFF<<(i<<3))) | (b << (i<<3)); } 2.61 A. !~x B. !x C. !~(x>>((sizeof(int)-1)<<3)) D. !(x&0xFF) 注意,英文版中C是最低字节,D是最高字节。中文版恰好反过来了。这里是按中文版来做的。 2.62 这里我感觉应该是英文版对的,int_shifts_are_arithmetic() int int_shifts_are_arithmetic(){ int x = -1; return (x>>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),于是改用2<<(w-k-1)。 int sra(int x, int k){ int xsrl = (unsigned) x >> k; int w = sizeof(int) << 3; unsigned z = 1 << (w-k-1); unsigned mask = z - 1; unsigned right = mask & xsrl; unsigned left = ~mask & (~(z&xsrl) + z); return left | right; } int srl(unsigned x, int k){ int xsra = (int) x >> k; int w = sizeof(int)*8; unsigned z = 2 << (w-k-1); return (z - 1) & xsra; } 2.64 int any_even_one(unsigned x){ return !!(x & (0x55555555)); } 2.65 int even_ones(unsigned x){ x ^= (x >> 16); x ^= (x >> 8); x ^= (x >> 4); x ^= (x >> 2); x ^= (x >> 1); return !(x&1); } x的每个位进行异或,如果为0就说明是偶数个1,如果为1就是奇数个1。 那么可以想到折半缩小规模。最后一句也可以是 return (x^1)&1 2.66 根据提示想到利用或运算,将最高位的1或到比它低的每一位上,忽然想如果x就是10000000..该如何让每一位都为1。于是便想到了二进扩展。先是x右移1位再和原x进行或,变成1100000...,再让结果右移2位和原结果或,变成11110000...,最后到16位,变成11111111...。 int leftmost_one(unsigned x){ x |= (x >> 1); x |= (x >> 2); x |= (x >> 4); x |= (x >> 8); x |= (x >> 16); return x^(x>>1); } 2.67

深入理解计算机系统(第二版)-家庭作业答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8161l9h8hm5ap1c1kzfj507xn0uyj200qhk_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top