2009年5月18日 星期一

XOR 這個神奇的東西

XOR 這個運算是一種互斥運算, 簡單來講 兩個bit一樣輸出為1, 不一樣則為0

真值表:

X--A--B
1--0--0
0--1--0
0--0--1
1--1--1

兩個數你把他排成binary, ex: A=0010, B=0100, 則X=A XOR B=A^B
X = 1001 很好玩吧

剛剛逛網頁時候 發現這篇 利用XOR來作變數交換的例子 (來源網頁 http://codingnote.blogspot.com/2008/04/xor.html)

當我們要implement SWAP function
只要先把 B=A^B --> A=A^B --> B=A^B

For example (in C language)

void Swap(int *a, int *b)
{
*b = *b^*a;
*a = *a^*b;
*b = *b^*a;
}

以後加到我的utils裡頭