美文网首页
设两个变量a=19;b=29;在不创建新实例的情况下使a、b的值

设两个变量a=19;b=29;在不创建新实例的情况下使a、b的值

作者: 魔力双鱼 | 来源:发表于2019-03-13 18:16 被阅读0次

方法一:

参考答案:

这道题要求不创建新的实例,只有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;

相关文章

网友评论

      本文标题:设两个变量a=19;b=29;在不创建新实例的情况下使a、b的值

      本文链接:https://www.haomeiwen.com/subject/esfgpqtx.html