异或运算符的作用

https://blog.csdn.net/lwq573384928/article/details/45437465

简略记忆:同0异1

1.由于0^0=0 0^1=1 所以,0^任何数 = 任何数
2.由于1^0=1 1^1 =0所以,1^任何数 = 任何数取反
3.任何数^任何数 = 0;
4.用于将特定的位反转,如对10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。原因见2
5.通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。
例如 a= 10100001 
b= 00000111
a=a^b; //a=10100110
//此步操作是将a b原值的相同位记录为0,不同位记录为1.
//并保存在a中,b值此步并没有发生变化
//由于1^任何数 = 任何数取反      0^任何数 = 任何数
b=b^a; //b=10100001
//a中用1表示原值中对应位不同的部分
//做异或操作是将b中与(原a)中相同的部分保留,与(原a)中不同的部分取反
//即将变成原来的a
a=a^b //a=00000111
//由于此时的a表示异同,b表示原来的a
//同理第二部步可获得原b值,赋给a即可实现转换
6.异或运算的特点:a两次异或同一个数b(a=a^b^b)仍然为原值a。//参考(5)即可知。
7.异或是可交换的:a^b = b^a
8.异或运算法则: 
  1. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
  2. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.

阅读更多
个人分类: 知识点
上一篇CodeForces 702B - Powers of Two(二分)
下一篇51nod1004// 快速幂模板
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭