2012-05-14 108 views
2

我有以下的C語句:C位布爾邏輯

int res = x & (x^y); 

有沒有辦法做同樣的事情,但使用xy只有一次一個?

例如:

x | (~x & y) == x | y 

回答

7

是,通過擴大XOR(a^b == (a & ~b) | (~a & b)),然後簡化的結果,得到:

res = x & ~y; 
4

x & (x^y)設置被上x並設置位設置在x^y例如未在y上設置。

所以,你可以這樣做:

int res = x & ~y;