异或运算

今天做了一道题:给定一个整形数组,找出其中出现次数为奇数次数的数(一定有且只有一个)。例如:{20,1,-1,2,-2,3,3,5,5,1,2,4,20,4,-1,-2,5}得到 5。

我的思路是写一个map集合,key为数组中的数,value为出现次数,然后找出其中value为奇数的key就可以了。

之后看了其他人的方法。

呃,瞬间感觉自己智商收到了侮辱。。。。。。。。。

异或运算,我一直知道其原理,但是不知道怎么用。

所以查了一下,给自己做个笔记:

异或运算的3个特点:

(1)  0^x = x       0异或任何数=任何数

(2)  1^x = -x      1异或任何数 = 任何数取反

(3)  x^x = 0        任何数异或自己=把自己置0

异或运算的常见用途:

(1)  实现两个值的交换,而不必使用临时变量。这是排序中常用的。

       a=1, b=2

       { a=a^b;  b=b^a;  a=a^b; }

      结果为 a=2,b=1

(2) 比较两个值是否相等

     a^b==0,  如果为true则a和b相等

(3) 加密和解密(也是题目中用到的)

     如果:a^x=y;

     则: y^x=a;

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值