我也是新手,今天看到了一个题 不用三方变量交换2个数。
想的方法也是 两数只差,或者乘积来交换,偶然看到书上有异或运算,连着异或3次可以直接交换,没想到如此神奇.
异或:二进制为上的数若相同则取1 不相同则取0
int a=2,b=3;
a=a^b;
b=a^b;
a=a^b;
语句非常之简单,原理如下:
a的ASCII码值为010 而b为011
第一次异或: 010^011 为001 此时a为1
第二次异或:001^011 为010 此时b为2
第三次异或:001^010 为011 此时a为3
那么 到此时 b的最终值为2 a为3 那么交换成功- - 方法当然不止这一种哦!! 我也是新手,写一下心得咯 因为书上并没有讲解用异或交换2个数的值