位运算小练习(1)

  练习一、

 

     (1)

      

     (2)

      

解答:(1)or :   1 | 0 = 1, 0 | 1 = 1, 1 | 1 = 1, 0 | 0 = 0;  result = bis(x, y);

   (2)xor :   1 | 0 = 1,   0 | 1 = 1,  0 | 0 = 0,   1 | 1 = 0;    result  = bis(bic(x,y), bic(y,x));

    假设z = bic(x, y) 如果y的其中某一位 yi 为 1, 则 xi 如果为 1 则 zi = 0, 若 xi 为 0, 则zi = 0; 如果 yi 为 0,则 xi 不变, 所以 z 与 x ^ y 的差别在于 yi = 1, xi = 0 时 (x ^ y) 第 i 位为1的而 zi = 0; 所以应该找出这些位 : xi = 0, yi = 1;并把z的这些位置为 1 。u = bic (y, x) 如果xi = 1, 则 ui = 0, 如果 xi  = 0, 如果yi = 0, 则 ui = 0, 如果yi = 1, 则 ui = 1; 所以u中为 1 的位即我们上面所寻找的xi = 0, yi = 1的位。所以答案为: x ^ y = bis(bic(x, y), bic(y, x))。

 

   bis(x, y) = x | y,   bic(x, y) = ~y&x,   x ^ y = (~y&x) | (~x&y). 

 

              

            

 

posted @ 2016-01-29 11:22  Chaofan34  阅读(248)  评论(0编辑  收藏  举报