首页 > 其他 > 详细

浅谈异或运算^的作用

时间:2020-03-14 21:16:25      阅读:65      评论:0      收藏:0      [点我收藏+]

很多算法题中使用位运算能够巧妙的解决很多问题,比如:

找出只出现一次的数

如果数组中只有一个数字出现一次,其他数字都出现两次。试找出这个数据

通常的情况,我们会采用遍历的思路。但是其实不用。因为异或运算有个十分重要的性质:任何一个数字异或它自己都等于0,而0异或任何数都等于那个数。

因此,但凡出现两次的数字,异或之后,相互抵消。遍历整个数组,最终留下的就是那个只出现一次的数字。怎么样,是不是很巧妙?此外,异或运算还可用于两数交换。比如

两数交换

通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a=3,b=4的值,可通过下列语句实现:

a=a∧b;
b=b∧a;
a=a∧b;

这样不通过任何中间变量,就实现了按照位运算实现了两数交换,过程如下图

技术分享图片

 

 

 另一个应用参考我的剑指offer专栏第40题——寻找只出现一次的数

浅谈异或运算^的作用

原文:https://www.cnblogs.com/shaonianpi/p/12493782.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!