(1)实验环境
Linux操作系统
(2)实验内容
①根据bits.c中的要求补全以下的函数:
int bitXor(int x, int y);
int tmin(void);
int isTmax(int x);
nt allOddBits(int x);
int negate(int x);
int isAsciiDigit(int x);
int conditional(int x, int y, int z);
int isLessOrEqual(int x, int y);
int logicalNeg(int x);
int howManyBits(int x);
unsigned float_twice(unsigned uf);
unsigned float_i2f(int x);
int float_f2i(unsigned uf);
*编译:./dlc bits.c
*测试:make btest
./btest
③具体
本次为一次计算机系统实验,就是使用一些基本的运算符来实现函数功能。
//1
/*
* bitXor - 仅允许使用~和&来实现异或
* 例子: bitXor(4, 5) = 1
* 允许的操作符: ~ &
* 最多操作符数目: 14
* 分值: 1
*/
/*
* tmin - 返回最小的二进制补码
* 允许的操作符: ! ~ & ^ | + << >>
* 最多操作符数目: 4
* 分值: 1
*/
//2
/*
* isTmax - 如果x是最大的二进制补码,返回1;否则,返回0
* 允许的操作符: ! ~ & ^ | +
* 最多操作符数目: 10
* 分值: 2
*/
/*
* allOddBits - 如果所有奇数位都为1则返回1;否则返回0
* 例子: allOddBits(0xFFFFFFFD) = 0, allOddBits(0xAAAAAAAA) = 1
* 允许的操作符: ! ~ & ^ | + << >>
* 最多操作符数目: 12
* 分值: 2
*/
/*
* negate - 返回-x
* 例子: negate(1) = -1.
* 允许的操作符: ! ~ & ^ | + << >>
* 最多操作符数目: 5
* 分值: 2
*/
//3
/*
* isAsciiDigit - 如果x是ascii码中的0~9,返回1;否则返回0
* 例子: isAsciiDigit(0x35) = 1.
* isAsciiDigit(0x3a) = 0.
* isAsciiDigit(0x05) = 0.
* 允许的操作符: ! ~ & ^ | + << >>
* 最多操作符数目: 15
* 分值: 3
/*
* conditional - 实现x?y:z
* 例子: conditional(2,4,5) = 4
* 允许的操作符: ! ~ & ^ | + << >>
* 最多操作符数目: 16
* 分值: 3
*/
/*
* isLessOrEqual - 如果x<=y返回1否则返回0
* 例子: isLessOrEqual(4,5) = 1.
* 允许的操作符: ! ~ & ^ | + << >>
* 最多操作符数目: 24
* 分值: 3
*/
//4
/*
* logicalNeg - 实现!运算符的功能
* 例子: logicalNeg(3) = 0, logicalNeg(0) = 1
* 允许的操作符: ~ & ^ | + << >>
* 最多操作符数目: 12
* 分值: 4
/* howManyBits - 返回将X表示为补码所需的最小有效位数。
* 例子: howManyBits(12) = 5
* howManyBits(298) = 10
* howManyBits(-5) = 4
* howManyBits(0) = 1
* howManyBits(-1) = 1
* howManyBits(0x80000000) = 32
* 允许的操作符: ! ~ & ^ | + << >>
* 最多操作符数目: 90
* 分值: 4
*/
//float
/*
* float_twice - 以unsinged表示的浮点数二进制的二倍的二进制unsigned型
* 参数和结果都会被作为unsigned返回,但是会表示为二进制的单精度浮点值。
* 允许的操作符: 任何整数或者无符号数操作符包括: ||, &&. also if, while
* 最多操作符数目: 30
* 分值: 4
*/
/*
* float_i2f - 返回int x的unsigned浮点数的二进制形式
* 参数和结果都会被作为unsigned返回,但是会表示为二进制的单精度浮点值
* 允许的操作符: 任何整数或者无符号数操作符包括: ||, &&. also if, while
* 最多操作符数目: 30
* 分值: 4
*/
/*
* float