XOR在算法中有哪些实际应用

Cra*_*lus 5 algorithm bit-manipulation xor

说实话,我的位操作生锈了.
我感兴趣的是XOR操作.好吧,我知道它的作用是什么,并且它用于加密,我们可以在没有任何临时变量的情况下进行交换,但我感兴趣的是算法的特定方法是否XOR适合.
我的意思是我对XOR算法的实际应用感兴趣(例如我们可以用它来找到重复的独特元素).是否存在一种问题模式(或问题的表述),人们可以看到使用方法XOR是什么?(与何时使用二进制搜索的模式相同?)
是否有一些XOR与核心算法相关的算法的实际应用列表,而不是简单地使用它,例如更快地进行数学运算,就像我们可以使用>>而不是划分2.

欢迎任何输入

Mar*_*aux 8

我想到的几个例子:

切换位:

int i = 123;
i ^= (1 << 4); // toggle bit 5
Run Code Online (Sandbox Code Playgroud)

某种随机性:

int i = 123;
for (int k = 0; k < 100; k++)
{
   i = i ^ (i << 1) + i;
   System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)

"弱加密":

int b = 235321;
int key = 24552;
int encrypted = b ^ key;
int decrypted = encrypted ^ key; // equals 235321
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,最后一个可以扩展到轻松加密纯文本(你只需要一个编码).*如果*密钥是随机的并且只要输入,它实际上是一个[相当好的密码](http://en.wikipedia.org/wiki/One-time_pad),因为它不可能破解(既不知道密钥也不知道密钥)纯文本).如果密钥较短(并因此重复以适应输入的长度),它可以很容易地破解(对于专家来说很容易) - 唯一剩下的问题是创建一次性填充并将其交给Bob.地穴图非常吸引人. (3认同)