lab1

  1. 没有解释思路,因为基本都是看题目要求用几个符号凑凑就好了,除了leftBitCount这个写了好久。虽然是上学期的实验,但是我依然记得这个leftBitCount,好不容易测试对了吧结果符号数超了一个,但是看来看去也是最简版本了,为了减一个符号磕了好久。
  2. bitXor
    /* 
     * bitXor - x^y using only ~ and & 
     *   Example: bitXor(4, 5) = 1
     *   Legal ops: ~ &
     *   Max ops: 14
     *   Rating: 1
     */
    int bitXor(int x, int y) 
    {
            int a,b;
            a=~x&y;
            b=x&~y;
            a=~(~a&~b);
            return a;
    }

     

  3. minusOne

    /*
     * minusOne - return a value of -1
     *   Legal ops: ! ~ & ^ | + << >>
     *   Max ops: 2
     *   Rating: 1
     */
    int minusOne(void) {
        int a=0;
        a=~a;
        return a;
    }

     

  4. leastBitPos

    /*
     * leastBitPos - return a mask that marks the position of the
     *               least significant 1 bit. If x == 0, return 0
     *   Example: leastBitPos(96) = 0x20
     *   Legal ops: ! ~ & ^ | + << >>
     *   Max ops: 6
     *   Rating: 2
     */
    int leastBitPos(int x) {
        int y=~x;
        y=y+0x1;
        y=x&y;
        return y;
    }

     

  5. allEvenBits

    /*
     * allEvenBits - return 1 if all even-numbered bits in word set to 1
     *   Examples allEvenBits(0xFFFFFFFE) = 0, allEvenBits(0x55555555) = 1
     *   Legal ops: ! ~ & ^ | + << >>
     *   Max ops: 12
     *   Rating: 2
     */
    int allEvenBits(int x) {
        int a=0x55;
        a+=a<<8;
        a+=a<<16;
        a=a+~(a&x)+1;
        return !a;
    }

     

  6. byteSwap

    /*
     * byteSwap - swaps the nth byte and the mth byte
     *  Examples: byteSwap(0x12345678, 1, 3) = 0x56341278
     *            byteSwap(0xDEADBEEF, 0, 2) = 0xDEEFBEAD
     *  You may assume that 0 <= n <= 3, 0 <= m <= 3
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值