本篇内容主要讲解“JavaScript位运算异或怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript位运算异或怎么使用”吧!
10年专注成都网站制作,成都定制网页设计,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于成都定制网页设计,高端网页制作,对成都加固等多个方面,拥有丰富的网站建设经验。
算法:
在位运算中,运用最多的便是异或操作^,规则如下所示:
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位运算异或怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
分享题目:JavaScript位运算异或怎么使用
分享地址:https://www.cdcxhl.com/article2/gcggic.html
成都网站建设公司_创新互联,为您提供网站设计公司、用户体验、ChatGPT、电子商务、动态网站、网站收录
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联