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