C/C++/Java不使用临时变量实现两个数的交换
2015-03-25 15:18
417 查看
方法一、加减减
a = a + b;
b = a - b;
a = a - b;
方法二、异或运算(只能用于整数)
a = a ^ b;
b = a ^ b;
a = a ^ b;
方法一好理解,加加减减就出来了,关于方法二,个人目前还不是很理解,如果有懂数学证明的不妨留言交流一下。异或运算就是将十进制数转换成二进制后,同位相同则取0,同位相异则取1。
只举例说明一下:
int a = 2 ; 0010
int b = 9; 1001
a = a ^ b ; 0010
^ 1001
a = 1011
b = a ^ b; 1011
^ 1001
b = 0010 = 2
a = a ^ b; 1011
^ 0010
a = 1001 = 9
a = a + b;
b = a - b;
a = a - b;
方法二、异或运算(只能用于整数)
a = a ^ b;
b = a ^ b;
a = a ^ b;
方法一好理解,加加减减就出来了,关于方法二,个人目前还不是很理解,如果有懂数学证明的不妨留言交流一下。异或运算就是将十进制数转换成二进制后,同位相同则取0,同位相异则取1。
只举例说明一下:
int a = 2 ; 0010
int b = 9; 1001
a = a ^ b ; 0010
^ 1001
a = 1011
b = a ^ b; 1011
^ 1001
b = 0010 = 2
a = a ^ b; 1011
^ 0010
a = 1001 = 9
相关文章推荐
- 实现两个int变量的值的交换,要求不使用临时变量。
- 不使用临时变量,实现两个变量值的交换
- 不使用临时变量交换两个数的值
- 不允许创建临时变量,交换两个数的内容(用异或实现)
- java实现两个变量值交换不使用第三个变量
- 交换两个数不使用临时变量的陷阱
- 交换两个数的值以及不使用临时变量交换两个数的值
- 如何在不使用第三方变量的前提下,交换两个变量的值 (Java实现)
- C语言实现 不允许创建临时变量,交换两个数的内容
- 不使用临时变量交换两个数
- Java不用临时变量temp将两个数交换(面试题)
- 不使用临时变量 交换两个数的值
- 不允许创建临时变量,交换两个数的内容(用加减乘除实现)
- java语言学习之不使用变量交换两个数
- 算法研究之不使用临时变量实现两个值的交换
- Python、C++中编写函数以及不使用临时变量交换两变量值的比较
- C语言 不使用临时变量交换两个数
- C/C++:在不使用第三个变量的情况下实现两个变量的交换
- 使用异或运算 不借助临时变量交换两个数
- 交换两个数的值以及不使用临时变量交换两个数的值