P39 ex 2.10
void swap(int *a, int *b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}
很巧妙的办法,利用XOR运算规律(交换率(x^y=y^x),结合率(y^x^x = y))
swap的证明很简单:
b:=a^b:=(a^b)^b=a^b^b=a
a:=a^b:=(a^b)^((a^b)^b)=a^b^a=b
void swap(int *a, int *b)
{
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}
很巧妙的办法,利用XOR运算规律(交换率(x^y=y^x),结合率(y^x^x = y))
swap的证明很简单:
b:=a^b:=(a^b)^b=a^b^b=a
a:=a^b:=(a^b)^((a^b)^b)=a^b^a=b
steven
2005/09/05 05:12
http://www.yacsoft.com
分页: 1/1 1