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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
深 入 理 解 计 算 机 系 统 ( 第 二 版 ) 家 庭 作 业 第 二 章 深入理解计算机系统二进制 2.55-2.57 略 2.58 int is_little_endian (){ int a = 1 ; return *(( char *)a); } 2.59 (x0xFF) | (y~0xFF) 2.60 unsigned replace_byte ( unsigned x, unsigned { return (x ~( 0xFF (i 3 ))) | (b (i } 2.61 A. !~x B. !x C. !~(x((sizeof(int)-1)3)) D. !(x0xFF) char b, int i) 3 )); 注意,英文版中 C 是最低字节, D 是最高字节。中文版恰好反过来了。这里是按中文版来做的。 2.62 这里我感觉应该是英文版对的, int int_shifts_are_arithmetic int x = - 1 ; return (x 1 ) == - } 2.63 对于 sra ,主要的工作是将 int_shifts_are_arithmetic() (){ 1 ; xrsl 的第 w-k-1 位扩展到前面的高位。 这个可以利用取反加 1 来实现,不过这里的加 1 是加 1(w-k-1) 。 0 0,即 xsra (1(w-k) - 1) 如果 x 的第 w-k-1 位为 0 ,取反加 1 后,前面位全为 0,如果为 1 ,取反加 最后再使用相应的掩码得到结果。 对于 srl ,注意工作就是将前面的高位清 用 1(w-k) ,于是改用 2(w-k-1) 。 int sra ( int x, int k){ int xsrl = (unsigned) x k; 1 后就全是 1 。 。额外注意 k==0 时,不能使 int w = sizeof unsigned z = unsigned mask = z - ( int ) 3; 1 (w-k- 1 ); 1 ; unsigned right = mask xsrl; unsigned left = ~mask (~(zxsrl) + 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 ()); } 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 ); 8 8 ; 1) 1 ); } x 的每个位进行异或,如果为 0 就说明是偶数个 那么可以想到折半缩小规模。最后一句也可以是 2.66 int leftmost_one (unsigned x){ x |= (x 1 ); x |= (x 2 ); x |= (x 4 ); x |= (x 8 ); x |= (x

文档评论(0)

文档查询,农业合作 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体土默特左旗农特农机经销部
IP属地广西
统一社会信用代码/组织机构代码
92150121MA0R6LAH4P

1亿VIP精品文档

相关文档