zoukankan      html  css  js  c++  java
  • 浅谈异或运算^的作用

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

    找出只出现一次的数

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

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

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

    两数交换

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

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

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

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

  • 相关阅读:
    今日头条、Face++开发岗面经
    美团offer面经
    成都百度测试开发一二面面经
    美团四面面经
    久邦数码(3G门户)面试
    58 面试
    好未来提前批
    百度提前批
    新浪面经
    Java Programs
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/12493782.html
Copyright © 2011-2022 走看看