那我们来想想吧. XOR做什么?
x y XOR
------------
0 0 0
1 0 1
0 1 1
1 1 0
那么我们怎么把它变成一个功能呢?
我们来看一下AND,AND的反序(〜x&〜y)(这恰好是NOR):
(~x&~y)
x y AND NOR
---------------------
0 & 0 = 0 1
1 & 0 = 0 0
0 & 1 = 0 0
1 & 1 = 1 0
看这两个输出,这是非常接近的,我们所要做的只是NOR以前的两个输出(x AND y)(x NOR y),我们将有解决方案!
(a) (b) ( a NOR b )
x AND y x NOR y ~a & ~b
-------------------------------
0 1 0
0 0 1
0 0 1
1 0 0
现在写出来:
a = ( x & y )
b = ( ~x & ~y )
XOR'd result = (~a & ~b)
答对了!
现在只需把它写入一个函数
int bitXor(int x, int y)
{
int a = x & y;
int b = ~x & ~y;
int z = ~a & ~b;
return z;
}