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

时间: 2024-10-26 18:58:56

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

xor异或逻辑运算

简略记忆:同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原值的相同位记录

【神经网络】BP算法解决XOR异或问题MATLAB版

第一种 %% %用神经网络解决异或问题 clear clc close ms=4;%设置4个样本 a=[0 0;0 1;1 0;1 1];%设置输入向量 y=[0,1,1,0];%设置输出向量 n=2;%输入量的个数 m=3;%隐层量的个数 k=1;%输出层的个数 w=rand(n,m);%为输入层到隐层的权值赋初值 v=rand(m,k);%为隐层到输出层的权值赋权值 yyuzhi=rand(1,m);%为输入层到隐层的阈值赋初值 scyuzhi=rand(1,1);%为隐层到输出层的阈值赋权

《汇编语言》笔记

教材<汇编语言>第二版 王爽 第一章 :基础知识 0. 机器语言:(010000001000000)0 和 1 的组成.1. 汇编语言有三类指令组成 · 汇编指令:汇编指令和机器指令一一对应,有编译器翻译识别,计算机无法直接识别. · 伪指令:没有对应机器码,有编译器执行  · 其他符号:如+,-,*,/,由编译器识别.   汇编语言的核心是汇编指令,它决定了汇编语言的特性.2. 一个内存单元=1Byte=8bit.1KB=1024Byte(字节)3. CPU要进行读写(外部通讯)需要进行以下

【机器学习】神经网络实现异或(XOR)

注:在吴恩达老师讲的[机器学习]课程中,最开始介绍神经网络的应用时就介绍了含有一个隐藏层的神经网络可以解决异或问题,而这是单层神经网络(也叫感知机)做不到了,当时就觉得非常神奇,之后就一直打算自己实现一下,一直到一周前才开始动手实现.自己参考[机器学习]课程中数字识别的作业题写了代码,对于作业题中给的数字图片可以达到95%左右的识别准确度.但是改成训练异或的网络时,怎么也无法得到正确的结果.后来查了一些资料才发现是因为自己有一个参数设置的有问题,而且学习率过小,迭代的次数也不够.总之,异或逻辑的

用Java语言实现对十六进制字符串异或运算

前言:好久没有写博客,最近一年感觉真是好忙,各种做不完的工作.相信很多上班族都会有这种感觉.最近对NFC进行写卡操作,需要计算一个校验位.一般情况下,校验位多数是由前几个字节进行异或运算所得. 现在我就先说一下我使用的场景: 把一个16字节的数据写到CPU卡(如交通卡)里面,最后一字节是校验码---前十五字节异或. 我开始从网上找了一些别人写的算法发现计算后结果不对,或者就是写的太复杂了,于是自己就写了一个,感觉也比较简单,现在分享给大家,希望一起交流一下. 第一节:什么是异或运算(主要摘自百度

MySQL数据库操作5-常用运算符

概述: 常用运算符主要包含有: 算术运算符, 比较运算符, 逻辑运算符, 位操作运算符 等… 1.算术运算符: 支持 + – * / 和 % , 比如在查找数据的时候使用: select n+1,n+2 from num; 前:,后: 同样可以使用其他运算. 注意除法会取到小数点后四位.除0的结果是没有意义的NULL. 2.比较运算符 比较运算符返回的结果通常是9,1,或NULL,可以在查询语句中使用来查询满足条件的记录. 常用的比较运算符介绍: = select 1=0,2=2,'1'=1,1

FEC之异或运算应用

话说为啥FEC需要异或( ^/⊕ )操作呢? 异或:xor 异或运算规则: 0 xor 0 = 0 0 xor 1 = 1 1 xor 0 = 1 1 xor 1 = 0 异或运算特性: 1). a xor a = 0 2). a xor 0 = a 3). (a xor b) xor c = a xor (b xor c) 4). IF a xor b = c THEN a xor c = b    异或的运算特性有两点很好的应用 查找 case 1: 一个数组,除了其中一个元素,其他元素都为

Minitab软件是现代质量管理统计的领先者,全球六西格玛实施的共同语言,以无可比拟的强大功能和简易的可视化操作深受广大质量学者和统计专家的青睐。

MINITAB 功能菜单包括: 基础和高级统计工具: 假设检验 (参数检验和非参数检验) 回归分析(一元回归和多元回归.线性回归和非线性回归) 方差分析(单因子.多因子.一般线性模型等) 时间序列分析 图表(散点图.点图.矩阵图.直方图.茎叶图.箱线图.概率图.概率分布图.边际图.矩阵图.单值图.饼图.区间图.Pareto.Fishbone.运行图等) 蒙特卡罗模拟和仿真 分布分析 灵活的数据导入.导出和时时监控 SPC (Statistical Process Control -统计过程控制)

异或的一些性质

http://artori.us/exclusive-or/ 不介绍什么是异或了,有人叫半加.数学系的叫按位模2加 下文用得到的一些简单的性质 x^0 = x 且 x^x = 0 交换律:x^y = y^x 结合律:(x^y)^z = x^(y^z) 自反性:x^y^y = x 下面是几个小题目,可以用异或解决,挺有技巧性 交换两个数ab     有意思的是搜索其他异或例子的时候,发现了这篇文章,文章里实现了一个异或交换的算法,和本文主题无关,不过很有意思,函数更多的时候应该只操作值而不是变量.