6

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

欢迎任何输入

4

1 回答 1

9

我脑海中浮现的几个例子:

切换位:

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
于 2012-04-23T19:41:55.533 回答