浅谈异或运算^的作用
Posted shaonianpi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈异或运算^的作用相关的知识,希望对你有一定的参考价值。
很多算法题中使用位运算能够巧妙的解决很多问题,比如:
找出只出现一次的数
如果数组中只有一个数字出现一次,其他数字都出现两次。试找出这个数据
通常的情况,我们会采用遍历的思路。但是其实不用。因为异或运算有个十分重要的性质:任何一个数字异或它自己都等于0,而0异或任何数都等于那个数。
因此,但凡出现两次的数字,异或之后,相互抵消。遍历整个数组,最终留下的就是那个只出现一次的数字。怎么样,是不是很巧妙?此外,异或运算还可用于两数交换。比如
两数交换
通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a=3,b=4的值,可通过下列语句实现:
a=a∧b;
b=b∧a;
a=a∧b;
这样不通过任何中间变量,就实现了按照位运算实现了两数交换,过程如下图
另一个应用参考我的剑指offer专栏第40题——寻找只出现一次的数
以上是关于浅谈异或运算^的作用的主要内容,如果未能解决你的问题,请参考以下文章