计算机系统_数据表示实验

(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);


    ②在Linux下测试以上函数是否正确,指令如下:
        *编译:./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
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值