异或运算的一些知识
来源:互联网 发布:vscode代码提示快捷键 编辑:程序博客网 时间:2024/05/21 11:21
原文地址:http://blog.csdn.net/zzxyyx_1/article/details/19009705
用异或交换两个数就不说了,一般没人那么用,毕竟异或符号优先级低,容易产生错误。
简单的定理
若a=b^c
那么b=a^c , c=a^b
-------------------------------------------------------------------------------------------
2*k xor 2*k+1 = 1
考虑n个连续数字异或
a xor a+1 xor a+2....xor a+n-1
可以取相邻的两个数凑成2*k xor 2*k+1
特殊处理一下两端的值即可。
考虑
a xor a+2 xor a+4... xor a+2*(n-1)
易知最后一位是不变的 其它位按上述方法处理即可。
-------------------------------------------------------------------------------------------
整数集对于异或运算构成一个群
满足封闭性、结合律、单位元和逆元。
那么有些加法的性质可以引申到异或运算中
比如 xorsum[l,r]=xorsum[0,r]^xorsum[0,l-1]
证明就是考虑数字的每一位。
若a[l,r]中某一位的1的个数为奇数,那么xorsum[l,r]那一位为1,
此时若a[0,l-1]那一位1的个数为奇,那么a[0,r]那一位1的个数为偶,xorsum[0,r]^xorsum[0,l-1]在那一位为1;
此时若a[0,l-1]那一位1的个数为偶,那么a[0,r]那一位1的个数为奇,xorsum[0,r]^xorsum[0,l-1]在那一位为1;
同理可证a[l,r]中某一位1的个数为偶数的情况。
-------------------------------------------------------------------------------------------
另外一个就是若a^b^c==0 那么对于任意0<k<=min(a,b,c) (a-k)^(b-k)^(c-k)!=0
证明就是考虑k的某一位
首先a、b、c在该位为1的个数应为偶数,不然a^b^c!=0
若k在该位是1,那么a-k b-k c-k 会使得0变1 1变0 那么此时(a-k)^(b-k)^(c-k)在该位为1 不为0
若k在该位为0,那么无视,继续看k-1位,
由此可知若k>0 那么必有k在某位为1,此时(a-k)^(b-k)^(c-k)!=0
-------------------------------------------------------------------------------------------
- 异或运算的一些知识
- 异或运算的一些特性
- 一些有趣的异或运算
- 关于“云运算”的一些知识。
- c9一些琐碎的运算符知识
- 运算符和表达式的一些知识
- 异或(^)运算的妙用
- 异或(^)运算的妙用
- C的|、||、&、&&、异或、~、!运算
- 神奇的异或运算
- C的|、||、&、&&、异或、~、!运算
- C的|、||、&、&&、异或、~、!运算
- C的|、||、&、&&、异或、~、!运算
- C的|、||、&、&&、异或、~、!运算
- 异或运算的技巧
- C的|、||、&、&&、异或、~、!运算
- 异或运算的性质
- C的|、||、&、&&、异或、~、!运算
- ZJUT1291(浮点A+B)
- MapReduce中实现对HBase中表的操作二
- Java面向对象——IO流 总结应用(打印流)
- quartz任务并行
- 操作格子 线段树
- 异或运算的一些知识
- CMemDC代码解
- 编译luamongo
- hdu 4358 Boring counting 线段树离线操作
- vs2012编译boost_1_53_0
- PAT basic 1012 :数字分类
- 浙大PAT 1051题 1051. Pop Sequence
- Hadoop 參數設定 – core-site.xml
- 很多老师的邮箱!!!不知道博文作者哪里收集的……