位运算应用(^和&)

简介: 位运算应用(^和&)

1.两数交换


  • 两数交换 ( 时间O(n),空间O(1) )


// 1.两数交换(时间O(n),空间O(1))
// 前提:a,b所指向的存储位置不同,否则交换后的结果都为0
        function exchange(a,b){
            a = a ^ b;
            b = a ^ b;
            a = a ^ b;
            console.log(a,b);
        }


2.一个数组中只有一个数出现次数为奇数,其他次数都是偶数,找出这个数?


function findood(arr){
            var eor = 0;
            for(var i=0;i<arr.length;i++){
                eor ^= arr[i];
            }
            console.log(eor);
        }


3.一个数组中只有两个数出现次数为奇数,其他次数都是偶数,找出这两个数?


function findtwoood(arr){
            var eor = 0,twoood =0;
            for(var i = 0;i < arr.length;i++){
                eor ^= arr[i];
            }
            var rightOne = eor & (~eor + 1); //找出这两个数^运算最右位数为1的数
            for(var j = 0;j < arr.length;j++){
                if ((rightOne & arr[j]) === 0){
                    twoood ^= arr[j];
                }
            }
            console.log(twoood,eor ^ twoood);
        }
相关文章
|
6月前
玩转位运算
玩转位运算
|
存储 Java
一篇搞定位运算(&、|、^、~、>>、<<、>>>)
我们最了解的就是十进制 , 除了十进制 , 还有二进制 , 六进制 , 八进制等等 , 由于位运算操作就是二进制 , 所以我们主要来说一下二进制 , 十进制的个位有(0~9)这几个数字 , 而二进制也相同 , 二进制的个位上只有0和1
58 0
|
1月前
|
机器学习/深度学习
位运算详解
本文介绍了位运算符及其基本操作,并通过几个例题详细解析了位运算的应用。内容包括左移`&lt;&lt;`、右移`&gt;&gt;`、按位取反`~`、与运算`&`、或运算`|`和异或运算`^`等运算符的使用方法。基本操作部分展示了如何检查和修改二进制位,以及异或运算的性质。例题部分则通过判定字符是否唯一、丢失的数字、两整数之和和消失的两个数字等问题,具体说明了位运算的实际应用技巧。
40 7
位运算详解
|
5月前
|
编译器 Linux C++
详细解读C++中的位运算总结
详细解读C++中的位运算总结
35 0
|
6月前
|
C++
位运算
位运算“【5月更文挑战第23天】”
40 1
|
5月前
|
机器学习/深度学习
常见位运算的总结
常见位运算的总结
46 0
|
存储 Java 程序员
“高端”的位运算
大家好,我是王有志。原计划迭代作为预备知识的收尾,不过在解2的幂和4的幂时,想到关于数字2的问题可以通过位运算去解决,因此补充了关于位运算的内容。
90 1
位运算专题(个人理解)
位运算专题(个人理解)
72 0
|
算法 数据安全/隐私保护
基本的位运算
基本的位运算
|
算法
位运算能做什么
位运算能做什么
54 0