方法一:
参考答案:
这道题要求不创建新的实例,只有a、b两个变量,要交换这两个变量的值,通常的做法是使用临时变量来临时存储,但是现在要求不使用新的实例,那么有什么办法呢?
方法就是通过位运算来操作:
a = a ^ b;
b = a ^ b;
a = a ^ b;
对于题目中的a = 19,也就是对应二进制00010011;而b=29,也就是对应二进制00011101
第一步:a = 00010011 ^ 00011101 => 00001110,将a、b的值都记录下来了
第二步:b = 00001110 ^ 00011101 => 00010011(值为19,也就是b得到了原来的a的值)
第三步:a = 00001110 ^ 00010011 => 00011101 (值为29,也就是a得到了原来的b的值)
注意,^符号表示按位异或。所谓按位异或是指对应位置上的二进制数值相同为0,不同为1。
方法二:
a=a+b;
b=a-b;
a=a-b;
网友评论