首页 > 代码库 > xor异或逻辑操作(辅助完成图形的叠加)

xor异或逻辑操作(辅助完成图形的叠加)

异或操作的作用: 异或 两个不相同,返回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

 

 

xor异或逻辑操作(辅助完成图形的叠加)