Swap the value of two integers without temporary storage

Someone says this is an old lame trick. I think it’s simple and clever use of XOR. How/Why does it work? It’s built around the properties of the XOR ^ operator, who has the following properties: A ^ B = B ^ A (commutative) A ^ 0 = A A ^ 1 = ~A A ^ A = 0 So, you can see how it get’s applied here: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio .h> int main(void) { unsigned int a, b; // ... populate somehow "a" and "b"... printf("a = %d - b = %d\n", a, b); a ^= b; // store in "a" the value of "a XOR b" b ^= a; // store in "b" the value of "a XOR b XOR b" = "a XOR 0" = "a" a ^= b; // store in "a" the velue of "a XOR b XOR a" = "b XOR 0" = "b" printf("a = %d - b = %d\n", a, b); } Neat.

January 13, 2010 Â· 1 min Â· 174 words

Jesus and Mo

I know I’ll now have some problems for posting this, but I can’t deny that it is VERY FUNNY!!! It’s a blog, with daily comic-strips about a very particular “couple”: Jesus and Mohammed. The blog is entitled: Jesus and Mo. I was unable to find the name of the author (what a surprise), but I really don’t care. Is he American, Saudi, Egyptian, Iraqi, Thai, Chinese or Napolitan? I really don’t care, as long as the strips are smart and funny. ...

September 20, 2008 Â· 1 min Â· 91 words