异或^运算的应用

原创 2016年08月30日 15:17:08

1.异或运算

      关于异或,有两种计算。一是逻辑异或,一是按位异或。所谓逻辑异或就是运算数是true或者false。比如p1=true,p2=true,p1^p2。

      按位异或则是将变量转化为二进制,每一位分别异或。相同为0,不同为1。

      按位运算如&、|、^优先级位于关系运算符之后,逻辑运算符之前。

      好像不经常强调逻辑异或和按位异或,因为两者就是一个运算符表示。如逻辑&&和按位&,逻辑||按位|我们很容易分清。但是两者也没有本质的区别,只是两种分类而已。

2.异或的应用

例一:不使用其他变量实现a、b值的交换

下面三句即可解决:

a=a^b;    //此时a=a^b

b=a^b;    //此时b=a^b^b=a

a=a^b;    //此时a=a^b^a=b


这主要利用了异或的特性,两个相同的数异或为0,不同的数按位异或肯定不为0。这里的意思是不同的数按位异或肯定在某位异或时结果为1。如果结果中某位为1,则二进制转化为十进制肯定不为0。

由此,引出例二:

数组中的数除了有两个数出现一次,其他数都成对出现。怎样最快找到这两个只出现一次的数字呢?

其他数成对出现是个契机,想到异或便是法宝。

我们将数组的元素从头到尾异或,相同的数在异或的过程中必然抵消为0,最终的异或结果即为两个不同的数异或的结果。异或结果不为0,某位为1。说明这两个不同的数在异或结果为1的这位上不同。这样找到结果中为1的位,根据这位为1就能将数组中两个唯一只有一个数字分开异或,最终的结果就可以得到这两个唯一的数字了。

3.异或运算的更多应用

      比如格雷码、奇偶分频等更多应用请深入了解。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

位运算异或的应用 例题来自广东工业大学OJ

在一堆数字中只有两个数字只出现一次,其他的数字都出现两次。在此时使用位运算来找出两个这数字,复杂度O(n)。

C语言总结之异或运算的一些特性及巧妙应用

1.一个数和自己做异或的结果是0。如果需要一个常数0,x86平台的编译器可能会生成这样的指令: xorl %eax, %eax。不管eax寄存器里的值原来是多少,做异或运算都能得到0,这条指令比同样...

异或运算及其应用

异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示, 其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。 它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算...

异或运算及其应用

异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示, 其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。 它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为...

异或运算的应用与nimm博弈

异或运算的性质 1、交换律 2、结合律(即(a^b)^c == a^(b^c)) 3、对于任何数x,都有x^x=0,x^0=x 4、自反性 A XOR B XOR B = A xor 0 =...

异或位运算加密

异或运算扩展

  • 2013-01-06 15:39
  • 28KB
  • 下载

4103: [Thu Summer Camp 2015]异或运算

题面:给定长度为n的数列X={x1,x2,...,xn}和长度为m的数列Y={y1,y2,...,ym},令矩阵A中第i行第j列的值Aij=xi xor  yj,每次询问给定矩形区域i∈[u,d],j...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)