这个实验帮助学生练习和掌握整型和浮点型数据的二进制表示及基本运算。在这个实验中,学生需要修改一个名为bits.c的C文件。该文件中包含多个空的方法体。学生需要在这些方法体中填写代码,使得每个方法都能够分别实现一个特定的数学函数,比如“绝对值”。在实现过程中,还有一些别的约束。比如,整型函数的实现中,学生只能使用顺序执行的C代码和限定的算术及逻辑操作符。
学生使用下列三种工具来说检查他们的工作;教师使用同样的工具来评估。
dlc:“data lab compiler”,该工具用于检查学生的代码实现是否满足指定的约束。 btest:该工具用于检查学生的代码实现是否正确。 driver.pl:这是一个驱动程序,能够调用dlc和btest来检查学生的代码实现,并自动评分。
你需要完成bits.c文件中所有function框架的实现,以满足该function对应注释所要求的功能需求和编程约束。
/*
bitAnd - x&y using only ~ and |
Example: bitAnd(6, 5) = 4
Legal ops: ~ |
Max ops: 8
Rating: 1
*/
int bitAnd(int x, int y) {
return 0;
}
Function框架前的注释描述了该function所要实现的功能,以及编程约束。就上述例子而言:
Legal ops:允许使用的C语言操作符仅为~和 |
实验要求 除了function框架前的注释,还有一些通用的约束(请认真阅读bits.c文件中的注释要求),比如:
不能使用别的运算符,比如:&&, | , -, ?:等等。 |
实验所需的文件和代码都在一个压缩文件:datalab-handout.tar中,解压缩后,其目录如下:
Makefile默认生成目标平台为32位机器y,如果实验平台为64位机器,需要将Makefile中的CFLAGS选项“-m32”修改为“-m64”。
请将包含函数实现代码的bits.c文件重命名为“学号-bits.c”文件,并提交。提交之前请务必利用实验工具进行检查。只有同时满足功能需求和编程约束的函数实现才能获得对应的评分。评分过程利用自动工具完成,因此,除非工具环境存在问题,否则不接受主观评分和申诉。
检查你的代码!!! 有3个实验工具可以帮助你依次检查完成的代码。README文件中有详细的说明。
./dlc bits.c
./dlc -e bits.c
./dlc -h
make
./btest
./btest -f bitXor -1 7 -2 -xf
./driver.pl
问题:在64位机器上运行,可能遇到该问题:fatal error: sys/cdefs.h no such file or directory
原因:部分工具是基于32位的glibc库开发的;需要使用对应的库文件。 解决方法: sudo apt install libc6-dev-i386 或:sudo apt-get install gcc-multilib