异或运算基本概念:对于参与运算的两个数,其二进制对应位相同为零,互异为一。按位异或运算三个特点:
a、与零异或结果不变: 0^0=0,0^1=1 ;
b、与一异或结果取反:1^0=1,1^1=0 ;
c、与自己异或运等于把自己置零:0^0=0,1^1=0 ;
常见用途
一:交换两个数的值,且无需定义中间变量
a = 10101;
b = 10011;
a = a^b = 00110;
b = a^b = 10101;
a = a^b = 10011;
二:判断两个数是否相等
return((a^b) == 0)
三:实现某些特定位的翻转
/*例如对数10101的中间三位翻转,则可以将该数与01110进行按位异或运算*/
10101^01110 = 11011
四:加密解密运算
加密的过程就是与密文按位异或运算;解密的过程就是将加密后的结果再跟同一个密文异或运算:
10101^01110 = 11011^01110 = 10101