异或
Posted apeway
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异或相关的知识,希望对你有一定的参考价值。
问题:交换两个int变量a,b值的方法?
方案1,需要借助第三个变量:
int tmp=a; a=b b=tmp; |
方案2,通过加减运算:
a=a+b; b=a-b; a=a-b; |
这种方案,a+b的结果可能超出int的范围,不推荐! |
方案3,通过异或运算:
a=a^b; b=a^b; a=a^b; |
这种方式是最快的,推荐! |
====================================================================================
异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示。
如果参与异或运算的两个位相同则结果为0,否则结果为1。
简单理解就是不进位加法,如1+1=0,,0+0=0,1+0=1。
异或运算特点 |
1、任何数异或0,等于该数自身。 2、任何数异或1,等于将该数取反。 3、任何数异或自身,等于将该数置0。 |
异或运算性质 |
1~交换律。 即a ^ b == b ^ a。 2~结合律。 即a ^ b ^ c = (a ^ b) ^ c == a ^ (b ^ c)。 3~自反性。 即a ^ b ^ b == a。 a ^ b ^ a == b。 |
====================================================================================
以上是关于异或的主要内容,如果未能解决你的问题,请参考以下文章