位操作实现-两数交换

两数


int a = 2  ;


int b = 5 ;


欲交换a 、b 的值,常规操作:


借助第三变量:int c = 0 ; // 定义时不忘初始化,养成良好编程习惯;借助以下语句:

c = a ;

a = b ;

b = a ;


这样实现了a b 的值交换,此次处理中引进了新变量c 完成了业务逻辑需求;

还有一种处理方式:

a = a ^ b ; ……1

b = a ^ b ; ……2

a = a ^ b ; ……3


注意:

1. 任何一个数对自己取异或(^)后均得到0 ;

2. 任何一个数和0取异或(^)后均得到本身 ;


所以 一步一步代入表达式,可以做以下分析:

第二步: b = a^b 就 等于 b  = (a^b)^ b ;就等于: b = a ^ (b ^ b) = a^ 0 = a

这一步结束: b = a  


第三步: a = a ^ b 注意此时的a = a ^ b 的,b = a 的,不要弄混了。所以,第三步表达式就等于

a = (a ^ b)^ b 就等于: a = (a^b)^(a) = ( a ^ a )^ b = 0 ^ b = b

这一步结束: a = b


至此:完成了a b 在没有引入第三者下实现了指交换;

相关文章
相关标签/搜索