温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

JavaScript位运算异或怎么使用

发布时间:2022-03-17 15:54:37 来源:亿速云 阅读:409 作者:iii 栏目:大数据

本篇内容主要讲解“JavaScript位运算异或怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript位运算异或怎么使用”吧!

算法:

在位运算中,运用最多的便是异或操作^,规则如下所示:

1.a^a = 0 ,a^0 = a,2.a^b^a= a^a^b = 0^b = b备注:下面的两个题目是单纯使用异或操作的题目,一种是最基本的异或操作,一种是稍作转换就可以完成的变形题目。

题目1: 异或的基本使用

代码实现:

func singleNumber(nums []int) int {    if len(nums) == 0 {        return 0    }    res := 0    for _,v := range nums{        res ^= v    }    return res}// 算法:// 利用位运算,异或的使用,a^a = 0 ,a^0 = a,// 因为题目是两个数,和一个数,属于^的完美使用范畴,// 由公式:a^b^a= a^a^b = 0^b = b,可以直接将代码取异或操作,//结果就是那个个数为1的数

题目2: 异或的变形题目

代码实现:

func singleNumber(nums []int) []int {    if len(nums) == 0 {        return nil    }    // step1:抵消掉数量为2的数    tmp:= 0    for _,v:=range nums{        tmp ^= v    }    // step2:找出来第一个为1的bit位    i:=0    for {       n := 1<<i        if tmp&n != 0 {           break       }       i++    }    // step3:按照bit=1来将数组分成两组,然后分别计算这两组的异或值,也就是这两个数    a,b := 0,0    test := 1<<i    for _,n := range nums {        if n & test == 0{            a^=n        } else {            b^=n        }    }    return []int{a,b}}// 算法:属于异或的延伸题目// 因为有两个数字个数是1,其他都是两个,所以要使用异或,// 大体思路是将包含两个一个的数组变成2个分别包含一个个数是1的数组里面,将题目转换成题目1的做法// 算法分为三步: // step1:通过异或,最终获取这两个数字的异或结果a^b=0xiiiii, // 这里只要是bit!=0,就说明这一个bit位在a,b两个数中不相同,我们就从低位开始找,找到第一个为1的bit位即可。// step2:找到这个bit位置// step3:遍历数组,将数组中该bit==1的元素放入数组A,bit==0的放入数组B,// 分别计算A,B就可以得到这两个数。

到此,相信大家对“JavaScript位运算异或怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI