使用位运算交换两个值,不用临时变量
2010-12-16 23:07
295 查看
这个位运算的应用,在学C程序设计时谭浩强书上有提到过。
假如a=3,b=4。想将a和b的值互换,并且不借助临时变量,可以用以下位运算操作实现:
a=a∧b;b=b∧a; a=a∧b;∧代表异或XOR。
具体过程如下:
a=011,b=100
a=a∧b;a=111 (a∧b 的结果,a 变成 7)
b=b∧a;b=011 (b∧a 的结果,b 已变成 3)
a=a∧b;a=100 (a∧b 的结果,a 已变成 4)
PS:借鉴以上的思想,通过如下的赋值操作同样可以实现值互换
a=a+b; b=a-b; a=a-b
假如a=3,b=4。想将a和b的值互换,并且不借助临时变量,可以用以下位运算操作实现:
a=a∧b;b=b∧a; a=a∧b;∧代表异或XOR。
具体过程如下:
a=011,b=100
a=a∧b;a=111 (a∧b 的结果,a 变成 7)
b=b∧a;b=011 (b∧a 的结果,b 已变成 3)
a=a∧b;a=100 (a∧b 的结果,a 已变成 4)
PS:借鉴以上的思想,通过如下的赋值操作同样可以实现值互换
a=a+b; b=a-b; a=a-b
相关文章推荐
- 不用临时变量交换两个变量的值
- 不使用临时变量而交换两个整形数
- 不使用临时变量交换两个整数
- 交换两个整数值,不用临时变量
- 怎样不用临时变量而交换两个值?
- 关于两个变量不使用临时变量进行值交换
- 交换两个值,不用临时变量
- 不用临时变量交换两个变量的值
- 从“交换两个变量而不用临时变量”谈起
- JavaSE7基础 使用位运算异或 进行两个变量的数值交换
- 两个数字交换(不使用临时变量)
- 交换两个变量而不用临时变量
- C中不使用临时变量交换两个变量的值
- 使用位运算实现判断一个数是否是2的n次方,实现不需要中间变量进行两个变量值的交换
- 不用临时变量交换两个数(离散、位运算)
- 从“交换两个变量而不用临时变量”谈起
- 不使用临时变量 依次交换两个已知数组的值
- 不用临时变量交换两个变量的值
- (1.1.2)C的|、||、&、&&、异或、~、!运算 (交换两个值,不用临时变量)
- 交换两个数,不用临时变量