交换两个值,不用临时变量?我们通过位运算中的异或来实现。 //测试代码为C语言代码
前置知识:
1.一个整数自己跟自己异或,结果为0 //因为异或的法则为,相同为0,不同为1,注意这里所说的都是二进制位。
2.任意一个整数跟0异或,结果为本身。 //因为1异或0得1,0异或0,得0,所以1还是1,0还是0,没发生变化。
------------------------------------------------------------------------------------------------------
测试代码如下:
int main(int argc, char* argv[])
{
int a=575,b=667;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d b=%d \n",a,b);
getchar();
return 0;
}
-----------------------------------------------------------------------------------------------------------------------------------
//效果截图如下:
---------------------------------------------------------------------------------------------------------------------------------
分析下a和b发生交换的原因:
根据以上代码不难得出以下表达式:
1. b=(a^b)^b=a^b^b=a
2. a=(a^b)^[(a^b)^b]=a^b^[a^b^b]=a^b^a^b^b=a^a^b^b^b=b
根据前面说的前置知识,不难明白a和b,为什么发生交换了。
-----------------------------------------------------------------------------------------------------------------------------------
您的十分满意是我追求的宗旨。
您的一点建议是我后续的动力。