二进制异或运算的应用

异或运算又称XOR或EOR 二进制中为对应位进行运算,若相同则为0,不同则为1.

简单性质:

  1. 0与x(任何数)异或运算得x
  2. 可以使用交换律和结合律

应用1:判断两个数是否相等

  根据异或运算的定义,当两个数相同时,运算结果为0

应用2:通过异或运算将重复的两个数去除。

  例:https://leetcode.com/problems/single-number/

应用3:交换两个变量的值without额外空间

  a^=b

  b^=a

  a^=b

应用4:异或加密

时间: 2024-10-09 21:43:41

二进制异或运算的应用的相关文章

二进制的位运算

二进制的位运算: 1.按位与 & 1)清零.如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零. 2)取数中指定位.取对应x位,该数的对应位为1,其余位为零.可以得到x位的指定位数. 2.按位或  | 1)常用来对一个数的某个位,置1. 3.异或运算 ^ 1)使特定位翻转,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可. 2)与0相异保留原值. 值交换的方法:1.借助第三变量来实现:C=A;A=B;B=C; 2.利用加减法实现两个变量

备忘“与”、“非”、“或”、“异或” 运算

位运算符主要针对二进制,它包括了:"与"."非"."或"."异或".从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面详细介绍每个位运算符. 1.与运算符与运算符用符号"&"表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段.public class data13{public st

异或运算的应用

异或是一种基于二进制的位运算,用符号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

java中与运算,或运算,异或运算,取反运算

//与运算 &  规则 :都为1时才为1        System.out.println( 7 & 9);        /*         *  7二进制 0111             *  9二进制 1001         * -----------          *        0001   ==1         * */                //或运算 | 规则:有一个为1,则为1        System.out.println(7 | 9);  

运用异或运算实现两个数不通过中间变量交换值的原理分析

或许对于像我现在这样的初学者很多都没见过这个符号 ^ 这个是个异或运算的符号,好的,我们现在开始分析它的运行原理! 异或运算的知识请点击此连接后了解 http://baike.baidu.com/view/1452266.htm 将i和j的初始值给2进制化后 分别为 10 -- 05  -- 12  -- 01 10的二进制就为1010 ----------------------------- 5 -- 1 2 -- 0 1 5的二进制就为 101 第一步: i=i^j; 好了,我们将2个数都

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

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

使用异或运算交换两个任意类型变量

这篇文章中将使用C语言,实现交换两个任意类型变量的功能.说到任意类型用C让人感觉很难做,如果是C++则使用模板函数就轻松搞定: template<class T> inline void swap(T& t1, T& t2) { T tmp; tmp = t1; t1 = t2; t2 = tmp; } 先说下使用^来交换两个整数,其代码看着简单但不容易理解 a ^= b; b ^= a; a ^= b; 有人说这种写法很奇葩,但我要说的是,异或运算是计算机很常用的操作.搞懂这

基础算法:与、或、异或运算

1.与运算(&) 参加运算的两个数据,按二进制位进行“与”运算. 运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0 例如:3&5  即 0000 0011 & 0000 0101 = 0000 0001   因此,3&5的值得1. 例如:9&5  即 0000 1001 (9的二进制补码)&00000101 (5的二进制补码) =00000001

与、或、异或运算

参加运算的两个数据,按二进制位进行“与”运算. 运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0 例如:3&5  即 0000 0011 & 0000 0101 = 0000 0001   因此,3&5的值得1. 例如:9&5  即 0000 1001 (9的二进制补码)&00000101 (5的二进制补码) =00000001 (1的二进制补码)可见9