异或操作的作用: 异或 两个不相同,返回true, 两个相同返回false
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
特殊情况, 全0的2*2矩阵, 一个其它矩阵和它xor的话是其本身: 依据 0 xor 0 = 0, 1 xor 0 = 1. 这个其它矩阵值不变.
0 0
0 0
特殊情况, 全1的2*2矩阵, 一个其它矩阵和它xor的话是其相反的值: 依据 0 xor 1 = 1, 1 xor 1 = 0, 这个其它矩阵值逆转.
1 1
1 1
从而可以看出, 一个其它矩阵被xor 两次一个矩阵的话, 可以得到其本身.
1. 为0情况, 值一直不变
2. 为1情况, 值逆转, 逆转两次, 变成原值
当然, 也可以基于交换率: A xor B xor B = A xor (B xor B) = A xor (全0矩阵) = A
对于图形来说, 如果两个图形A和B需要叠加的时候, 从B图形截取某个不规则形状的部分放到图形A上:
可以基于xor的这个原理:
1. 基于单色图原理, 使用B图生成掩码单色图C, 掩码图中, 截取部分置为0. 其它部分置为1.
2. 位操作
A图 = A图 xor B图
A图 = A图 and 掩码图C ( 通过这个操作,使得A图中对应截取部分形成全0矩阵)
A图 = A图 xor B图 (A图中对应的全0矩阵部分 xor B 图,根据xor全0矩阵保持不变的特性, 从而保留了B图的截取部分,其它部分未受影响,直接恢复A中原有情况)
以上是介绍的原理,对于实现的代码,可以参考:
http://www.cnblogs.com/syxchina/archive/2010/06/01/2197688.html
原文地址:http://blog.csdn.net/chunyexiyu/article/details/39212539