异或运算来实现两个变量互换
2017-03-05 16:50
274 查看
一般情况下,如果我们要实现两个变量互换需要借助于一个第三方临时变量,这个临时变量可以临时存放某一个变量的值,帮助我们完成值的交换。有没有不需要其他变量、直接实现值互换的方法呢? 答案是:当然有。
这里介绍一种特殊的情况(并不是对所有类型的变量都可以使用):当变量的类型是整形或者字符型的时候,位运算是一个非常有用的工具,尤其是异或运算。异或运算的法则是:x^0=x;x^x=0; 并且 a^b=b^a; 由此,可以得到:
a^b^b=a^(b^b)=a^0=a; 进行如下运算:
a=a^b;
b=a^b;
a=a^b;
实际上就是:令 a=a^b; 那么 b=a^b; 实际是 b=(a^b)^b=a^b^b=a^(b^b)=a^0=a;
而 a=a^b; 其实就是 a=(a^b)^a=a^b^a=b;
所以运算完成后就达到了值互换的目的。
再次强调一下,变量类型是整型或字符型才可以使用该方法。
这里介绍一种特殊的情况(并不是对所有类型的变量都可以使用):当变量的类型是整形或者字符型的时候,位运算是一个非常有用的工具,尤其是异或运算。异或运算的法则是:x^0=x;x^x=0; 并且 a^b=b^a; 由此,可以得到:
a^b^b=a^(b^b)=a^0=a; 进行如下运算:
a=a^b;
b=a^b;
a=a^b;
实际上就是:令 a=a^b; 那么 b=a^b; 实际是 b=(a^b)^b=a^b^b=a^(b^b)=a^0=a;
而 a=a^b; 其实就是 a=(a^b)^a=a^b^a=b;
所以运算完成后就达到了值互换的目的。
再次强调一下,变量类型是整型或字符型才可以使用该方法。
相关文章推荐
- 使用异或运算实现中两个变量互换的方法
- java中把两个变量进行值交换,通过异或两次运算就能实现值互换。
- 利用异或运算实现两个变量的互换(学习)
- java 中利用异或实现两个变量互换
- Java中使用异或语句实现两个变量的互换
- 5,javase代码实战-运算符——位运算实现两个变量的互换及其他方式(四)
- [Java] 不使用第三个变量实现两个整数类型变量互换(异或运算符)
- 通过异或运算实现两个变量的交换(不需借助第三个变量)
- 为什么异或运算可以实现两个整数的交换,而无需借助第3个临时变量
- 用异或实现两个变量的互换
- 深入理解异或运算 xor 的含义——再探不使用加减乘除实现加法运算、不使用额外空间交换两个变量的值
- 为什么异或运算可以实现两个整数的交换,而无需借助第3个临时变量
- 在不借助第三方变量情况下实现两个变量的交换(借助于异或运算)
- (1.1.2)C的|、||、&、&&、异或、~、!运算 (交换两个值,不用临时变量)
- 两个变量值交换 异或运算实现方法
- Java中异或运算实现两个整数的交换以及其功能函数实现
- 两个整形变量的互换;以及在不申请空间的情况下实现互换;十个数中求最大值
- 不借助第三个变量,实现两个整数互换值
- 实现两个数字的互换,不需要借助第三个变量
- 按位异或运算交换两个变量的值原理