深入理解计算机系统(第二版) 家庭作业 第二章
正在看《深入理解计算机系统》这本书,课后茫茫多的习题,看着就让人发怵。。
做的时候也需要验证一下对错,所以在网上找了很多相关的题解。顺便就在这里记一下了。
先放一下源码地址:
第二章各种编码和绕来套取的计算当时差点把我劝退,做个小结就是一般来说整数用补码编码,浮点数用 IEEE 浮点编码,和小心精度问题。
2.55
先上 show-bytes.c 源码:
用 GCC 编译:
run 一下:
输出:
2.56
可以在后面加参数,就可以试不同的示例值了:
2.57
增加三个函数并修改测试函数:
重新编译,测试结果如下,注意最后三行输出是新加的:
2.58
2.59
2.60
2.61
2.62
2.63
2.64
2.65
2.66
实现掩膜,数位中只剩下最左边的 1,其他位都是 0。如果 x 为 0,那么函数返回 0。
利用移位操作,首先将 x 右移再或,分别利用 1,2,4,8,16
,得到从最左边的 1 后面全部为 1,然后再右移1位,取异或。
2.67
A:
If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior it undefined.
32位机器上没有定义移位32次,所以需要分多次左移。
2.68
让 x 的最低 n 位变 1。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 风屋
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果