2014年10月14日 星期二

xor swap

x ^ x = 0
x ^ 0 = x

x ^ y = y ^ x
x^(y^z) = (x^y)^z


void haha(int& x, int& y)
{
    x = x ^ y;
    y = x ^ y;
    x = x ^ y;
}


y = (x ^ y) ^ y = x ^ 0 = x
x = (x ^ y) ^ x = (y ^ x) ^ x = y ^ ( x ^ x) = y ^ 0 = y

通常不建議用這種方式做swap.

沒有留言:

張貼留言