标签:
练习一、
(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).
标签:
原文地址:http://www.cnblogs.com/IwAdream/p/5168261.html