实验 1. Data Representation
资源下载: [实验手册]
本次实验精选了一些有趣的代码,巩固此阶段学习的位运算(bitwise)和整数的表示(integer representation)。另外,实验也会补充一些开发工具的使用和调试练习,目的是为了便于大家更好地完成作业。
本阶段的话题是熟练掌握位运算、位掩码、以及涉及到的调试命令,并能够将无符号整数表示为二进制多项式,将有符号整数表示为二进制补码。以下一些问题,旨在验证你的理解并让你进一步思考这些概念:
- 考虑将整数的大小四舍五入到 2 的幂(例如,3 舍入到 4、4 到 4、5 到 8,对于负数:-3 舍入到 -4、-4 到 -4,依此类推)。正数的位模式与舍入后的值的位模式有何不同?负整数的情况呢?
- 假设一个位运算表达式,可以将
unsigned int
值的高 N 位清零。请问这个表达式如何用算术方法来计算? - 在
gdb
下运行的程序时,什么时候向程序提供命令行参数:启动gdb
时,还是从gdb
内部运行程序时? - CSAPP 第 2 章提供了许多优秀的练习题和答案,可以进一步练习!
学习目标
- 复习位(bit)、位运算(bitwise)、位掩码(bitmask)等概念
- 阅读并分析涉及位和整型运算的代码
- 进一步练习在 Linux 远程开发环境下编辑、编译、测试、调试的工作流程
初始代码
你的个人用户目录下应该已经有 cs102
这个文件夹了,通过下面的命令拷贝初始代码到该目录中:
cp -r /home/cs102-shared/labs/lab1 ~/cs102