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

时间:2012-04-23 19:34:57

标签: algorithm bit-manipulation xor

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

欢迎任何输入

1 个答案:

答案 0 :(得分:8)

我想到了一些例子:

切换位:

int i = 123;
i ^= (1 << 4); // toggle bit 5

某种随机性:

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

“弱加密”:

int b = 235321;
int key = 24552;
int encrypted = b ^ key;
int decrypted = encrypted ^ key; // equals 235321