xor异或运算异或运算与或运算

我们熟悉逻辑运算,主要是AND和OR,以及XOR,这也很重要。

本文介绍了异或运算的含义和应用。

一、含义

XOR是异或的缩写。Exclusive在英语中的意思是“排他的,唯一的”,可以理解为XOR是比较简单的OR运算。

我们知道,OR运算的运算符有两种,结果都是真的。

1)一个是真的,一个是假的;

2)两者都是真的。

以上两种情况有时需要明确区分,所以引入异或。

XOR排除了第二种情况,只有第一种情况一个运算符为真,另一个为假)才会返回true,所以可以认为是比较简单的OR运算。即XOR主要用于判断两个值是否不同。

异或一般用插入符号表示。如果0为假,1为真,异或的运算真值表如下。

0 ^ 0=00 ^ 1=11 ^ 0=11 ^ 1=0

二、运算定律

异或运算有以下运算规律。因为很简单,这里省略了证明。

1)值与自身之间的运算总是假的。

X x=0 2)值和0之间的运算总是等于它自己。

X 0=x 3)可交换性

X y=y x 4)绑定

^y ^ z)=^ y)^ z

三、应用

根据上述运算规律,可以得到XOR运算的许多重要应用。

00-1010个以上值的异或运算可以根据运算规律进行简化。

a ^ b ^ c ^ a ^ b=a ^ a ^ b ^ b ^ c=0 0 c=c

3.1 简化计算

两个变量连续三次异或运算,可以互相交换值。

假设两个变量是X和Y,它们各自的值是A和b,下面是X和Y三次的异或运算,音符是每次运算后两个变量的值。

X=x y//a b,b) y=x y//a b,a b b)=a b,a) x=x y//a b a,a)=b,a)这是

3.2 交换值

异或运算可用于加密。

第一步,对明文和密钥进行异或运算,得到密文。

文本密钥=密文第二步,将密文和密钥再次进行异或运算,可以恢复为明文。

密文密钥=文本原理很简单。如果明文是X,密钥是Y,那么X连续两次与Y进行异或运算得到自己。

x ^ y) ^ y=x ^ y ^ y)=x ^ 0=x

3.3 加密

异或运算可用于数据备份。

x和Y进行异或运算,产生备份文件z

x y=z后,无论是文件x还是文件y损坏,只要两个原始文件没有同时损坏,就可以根据另一个文件和备份文件进行恢复。

X z=X X Y)=X X) Y=0 Y=Y上面的例子是Y受损,X和Z异或得到Y。

00-1010面试中的一些算法题也可以通过异或运算快速解决。

请看下面的问题。

数组包含n-1个成员,这些成员是从1到n的整数,并且不重复。请找出丢失的号码。

最快的解决方法是将所有数组成员A[0]到A[n-2])和从1到n的整数放在一起进行异或运算。

A [0] a [1].a [n-2] 1 2.n在上面的公式中,每个数组成员会出现两次,相同的值会被异或得到0。只有缺失的数字出现一次,所以最终结果就是这个值。

你可能会想,加法也可以解决这个问题。

2.n-a [0]-a [1]-.-a [n-2]但是,加法的速度没有异或运算快,需要额外的空间。如果数量大,就有溢出的可能。

下面是一个类似的题目,可以作为练习。

一个数组包含n 1个成员,是1到n之间的整数,只有一个成员出现两次,其他成员只出现一次。请找出重复出现的数字。

3.4 数据备份

异或技巧[1]

结束)

四、一道面试题

[1]异或Trick:https://florian.github.io/xor-trick/

168飞艇6种不亏钱的方法简单。如果明文是X,密钥是Y,那么X连续两次与Y进行异或运算得到自己。

x ^ y) ^ y=x ^ y ^ y)=x ^ 0=x

3.3 加密

异或运算可用于数据备份。

x和Y进行异或运算,产生备份文件z

x y=z后,无论是文件x还是文件y损坏,只要两个原始文件没有同时损坏,就可以根据另一个文件和备份文件进行恢复。

X z=X X Y)=X X) Y=0 Y=Y上面的例子是Y受损,X和Z异或得到Y。

00-1010面试中的一些算法题也可以通过异或运算快速解决。

请看下面的问题。

数组包含n-1个成员,这些成员是从1到n的整数,并且不重复。请找出丢失的号码。

最快的解决方法是将所有数组成员A[0]到A[n-2])和从1到n的整数放在一起进行异或运算。

A [0] a [1].a [n-2] 1 2.n在上面的公式中,每个数组成员会出现两次,相同的值会被异或得到0。只有缺失的数字出现一次,所以最终结果就是这个值。

你可能会想,加法也可以解决这个问题。

2.n-a [0]-a [1]-.-a [n-2]但是,加法的速度没有异或运算快,需要额外的空间。如果数量大,就有溢出的可能。

下面是一个类似的题目,可以作为练习。

一个数组包含n 1个成员,是1到n之间的整数,只有一个成员出现两次,其他成员只出现一次。请找出重复出现的数字。

3.4 数据备份

异或技巧[1]

结束)

四、一道面试题

[1]异或Trick:https://florian.github.io/xor-trick/

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注