异或相关知识 xor (草稿)
1 异或的定义
- 异或(xor)是一个数学运算符。
- 它应用于逻辑运算。
- 异或的数学符号为“⊕”,计算机符号为“xor”,也可以写成 ^ (注意区别于乘方符号^)
- 其运算法则为:
- 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
- 异或是基于二进制的
- 异或是基于二进制的,逐位的比较!
- 异或可以理解为不进位的二进制加法
2 为什么 0异或任何数=自身, 而1异或任何数=非自身
0异或任何数=自身, 1异或任何数=非自身
下面是我的推导过程,网上的往往说的不太清楚
A只可能是0 或者1
A ^ 1 的推导
如果A=0, 那么A^1=1, 所以A^1的结果和A相反
如果A=1,那么A^1=0, 所以A^1的结果和A相反
所以无论A=0/1, A^1都是非A
所以A ^1=非A
A ^0的推导
如果
如果A=0, 那么 A^0=0 , 所以A^0的结果和A相同
如果A=1, 那么 A^0=1 , 所以A^0的结果和A相同
所以A ^0=A
3 为什么有了不等于,还要异或?这两者相同吗?
- 异或 不同于 不等于
- 区别在于异或是接位进行的,不等是按整体进行的
- 异或属于位运算,把一个数以二进制的形式对每一位进行异或运算
4 xor 不同于 or
- or(t,t)=t
- xor(t,t)=0
参考资料,需要整理,先这样
异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。
异或略称为XOR、EX-OR
程序中有两种演算子:XOR、⊕。
使用方法如下
z = x ⊕ y
z = x xor y
英文术语 exclusive or 怎么理解呢?“异或”最早是因为什么发明的?
对于a⊕b⊕a=b,我觉得“0异或任何数不变,1异或任何数取反”比较好理解。有没有别的理解方式,感觉好神奇。能独立发现a⊕b⊕a=b交换 a、b 值的人,能不能告诉我你们是怎么思考的。。
表示为:
0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0
特点:
0异或任何数,是任何数;
1异或任何数,任何数取反;
任何一个数字异或自己都等于0
面试题:一个整型数组中除了两个数字之外,其他的数字都出现了两次。试找出这两个只出现一次的数字。《剑指offer》
异或的意思是 按位比较,位相同(0,0或1,1)时,结果为0,位不同时(0,1或1,0)结果为1
所以,0异或任何数A 结果还是A
A异或1时,A的最后一位是1,则会变为0,如果是0,则会变为1,因此,结果一定是非A
异或本质就是无进位相加,比如下表
第一个数 | 1 | 1 | 0 | 0 |
---|---|---|---|---|
第二个数 | 0 | 1 | 0 | 1 |
结果 | 1 | 0 | 0 | 1 |
- 第一个数为1,第二数为0时,结果为1+0=1;
- 第一个数为1,第二数为1时,结果为1+1=2,逢2不进1直接为0;
- 第一个数为0,第二数为0时,结果为0+0=0;
- 第一个数为0,第二数为1时,结果为0+1=1;
结论:多个数的异或就看1的个数是奇数还是偶数,如果为奇数则最终结果为1,如果为偶数则最终结果为0
异或性质:满足交换律和结合律 即:a^b=b^a (a^b)^c=a^(b^c)
异或应用
案例1:不使用中间变量来交换两个数的位置
int a=100,b=200;
a=a^b;
b=a^b;
a=a^b;
这段代码怎么理解呢? 把a看作甲,把b看作乙
- 第一行的a=a^b;该行代码执行完之后,a变成甲^乙 , b还是乙。
- 第二行代码b=a^b;该行代码执行完之后,b=甲^乙^乙,因为乙^乙的结果为0,所以b=甲=a。
- 第三行代码a=a^b;该行代码执行完之后,a=甲^乙^甲,因为甲^甲的结果为0,所以a=乙=b。
异或相关知识 xor (草稿)相关推荐
- POJ 2788 ipnetworks 计算机网络相关知识
今天刚好考完计算机网络,刚好复习下IP和子网掩码的相关知识. 子网掩码: 子网掩码是子网划分的依据,它跟IP地址一样,长度也是32位,点分十进制表示,每部分0~255,但是跟IP地址不同的是,子网掩码 ...
- 狂补呼叫中心相关知识,将收集的资料贴于此
狂补呼叫中心相关知识,将收集的资料贴于此: H.323的协议体系 根据1998年H.323第二版,H.323制定了无QoS(服务质量)保证的分组网络 PBN(packet Based Networks ...
- 卷积神经网络(CNN)相关知识以及数学推导
神经网络概述 神经元模型 以上就是经典的"M-P神经元模型".在这个模型中,神经元接收来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输 ...
- 分式型函数的相关知识
一.常见列举 [代数部分] ①分子分母都是一次型,如\(f(x)=\cfrac{x+2}{x+1}\): 特别注意:\(f(x)=\cfrac{1-x}{1+x}\),对称中心为\((-1,-1)\) ...
- JS作用域相关知识(#精)
在学习<你不知道的JS>一书中,特将作用域相关知识在此分享一下: #说到作用域,就不得不提到LHS查询和RHS查询: 1)如果查询目的是对变量进行赋值,则使用LHS查询 2)如果查询目的是 ...
- 工业相机参数之帧率相关知识详解
点击上方"小白学视觉",选择加"星标"或"置顶"重磅干货,第一时间送达 工业相机是机器视觉系统的重要组成部分之一,在机器视觉系统中有着非常重 ...
- shell的相关知识(变量、脚本定义)
一.shell的相关知识: 1.对于shell编程语言大体分为:机器语言.汇编语言.高级语言 2.shell变量类型:事先确定数据的存储格式和长度 shell变量分为:字符型.数值型 数值型又分为:整 ...
- 视频压缩算法的相关知识
视频压缩算法的相关知识 MPEG-1 MPEG 视频压缩编码后包括三种元素:I帧(I-frames).P帧(P-frames)和B帧(B-frames).在MPEG编码的过程中,部分视频帧序列压缩成为 ...
- linux 格式化 dvd,linux 服务器分区格式化相关知识 -mount
关于linux 系统mount和mkfs 的相关知识: 使用mount 1)Mount的相关格式:mount [-t 文件类型][-o 选项] devicedir 详解: -t 文件类型,通常默认m ...
最新文章
- 详解Spring中Bean的自动装配~
- Android JNI入门第一篇——HelloJni
- 几个重要的java数据库访问类和接口
- 以效率为根本,网易慢跑要做“另类”的TO B业务
- OAuth2.0学习(1-9)新浪开放平台微博认证-web应用授权(授权码方式)
- java session 数量_java中使用session监听实现同帐号登录限制、登录人数限制
- ios PNG Crush error (PNG图片错误)
- wampserver php乱码,WampServer搭建php环境可能遇到的问题
- Android虚拟化技术
- 离线处理需要做哪些工作_游戏配音需要做哪些工作?
- js this指向分析
- SQLi LABS Less-3 联合注入+报错注入
- 哪款浏览器好用_超级实用!让你效率倍增的6款浏览器插件
- 机器学习-决策树(XGBoost、LightGBM)
- 168个怪兽之声进化游戏生物怪兽音效素材 Evolved Game Creatures – Monster Sounds
- iQOO Neo6 SE什么时候发布 iQOO Neo6 SE配置如何
- matlab uicontrol 下标,Matlab Impoint和Uicontrol
- Day532533.Python基础 -python
- 什么是配置管理?配置管理由专人负责吗?
- SQL 横转竖 、竖专横(转载) 列转行 行转列 表旋转
热门文章
- emc做oracle备份,Oracle备份和EMC存储到底谁说的对?
- 全微分/偏导数/方向导数/梯度/全导数
- Spring---浅谈IOC
- 家用电器用户行为分析与事件识别
- 1024程序员节 - 分享一个抖音视频下载程序
- 魔改 Typora 主题
- 操作系统学习-练习题个人总结(一)
- python 将 .pdf 文件转为 .md
- 【日本IT】2018日本开发语言收入排名大公开 | 快来看看你的Java、.Net上榜了吗?
- java dib文件 加位图文件头_DIB类头文件和DIB类的实现DIB.CPP