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原值的相同位记录为0,不同位记录为1.

  //并保存在a中,b值此步并没有发生变化

  //由于1^任何数 = 任何数取反 0^任何数 = 任何数

b=b^a; //b=10100001

  //a中用1表示原值中对应位不同的部分

  //做异或操作是将b中与(原a)中相同的部分保留,与(原a)中不同的部分取反

  //即将b编程原来的a

a=a^b //a=00000111

  //由于此时的a表示异同,b表示原来的a

  //同理第二部步可获得原b值,赋给a即可实现转换

6.异或运算的特点:a两次异或同一个数b(a=a^b^b)仍然为原值a。//参考(5)即可知。

7.异或是可交换的:a^b = b^a

时间: 2024-07-29 00:05:20

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, 

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

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

HDU 5175 Misaki's Kiss again (异或运算,公式变形)

Misaki's Kiss again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 201    Accepted Submission(s): 57 Problem Description After the Ferries Wheel, many friends hope to receive the Misaki's kiss

异或运算的性质及用途

 1.两个数的交换  利用异或运算可以实习一种简单的不使用第三个数的交换方式, 代码如下所示: void swap(int a,int b) { a = a^b; b = a^b; a = a^b; }  原因是:异或运算是它本身的逆运算,故对于两个数或是布尔变量有如下性质: (a XOR b) XOR b = a 补充,异或运算的简单性质: 1. a ⊕ a = 0 2. a ⊕ b = b ⊕ a // 异或运算满足交换律 3. a ⊕ b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕

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: 一个数组,除了其中一个元素,其他元素都为

bzoj4103【THUSC2015】异或运算

4103: [Thu Summer Camp 2015]异或运算 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 359  Solved: 188 [Submit][Status][Discuss] Description 给定长度为n的数列X={x1,x2,...,xn}和长度为m的数列Y={y1,y2,...,ym},令矩阵A中第i行第j列的值Aij=xi xor  yj,每次询问给定矩形区域i∈[u,d],j∈[l,r],找出第k大的Aij

二进制异或运算的应用

异或运算又称XOR或EOR 二进制中为对应位进行运算,若相同则为0,不同则为1. 简单性质: 0与x(任何数)异或运算得x 可以使用交换律和结合律 应用1:判断两个数是否相等 根据异或运算的定义,当两个数相同时,运算结果为0 应用2:通过异或运算将重复的两个数去除. 例:https://leetcode.com/problems/single-number/ 应用3:交换两个变量的值without额外空间 a^=b b^=a a^=b 应用4:异或加密

集合的异或运算(对称差)

1.集合的异或运算(AΔB)定义属于A或属于B,但不同时属于A和B的元素的集合称为A和B的对称差,即A和B的异或. 注:草绿色部分即为 AΔB 2.对称差(异或)运算的定律2.1 AΔB = (A-B)∪(B-A) = (A∪B)-(A∩B)该公式的证明已在 集合的证明及相关习题 中证明了 2.2 对称差运算的交换律(AΔB)ΔC = (AΔC)ΔB 注:图1中草绿色部分为 (AΔB) ,三角形区域为 C ,(AΔB)ΔC  = 仅含草绿色或仅含三角形的区域注:图2中草绿色部分为 (AΔC) ,

异或运算的应用

异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示, 其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1. 它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0. 异或的性质 交换律:a ^ b = b ^ a 结合律:a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c d = a ^ b ^ c 可以推出 a = d ^ b ^ c 自反性:a ^ b ^ a = b x ^ x = 0, x ^ 0 = x 应用: 1