我最近偶然发现了这段代码found on Wikipedia,想要澄清一下发生了什么:
int hamming_distance(unsigned x, unsigned y)
{
int dist = 0;
unsigned val = x ^ y;
// Count the number of bits set
while (val != 0)
{
// A bit is set, so increment the count and clear the bit
dist++;
val &= val - 1;
}
// Return the number of differing bits
return dist;
}
对两个输入执行XOR运算有什么意义?
答案 0 :(得分:2)
该函数基本上返回输入数字之间不同位的数量。
这是通过 XOR 来实现的 - 这两个数字将产生一个输出,其中只有那些位将设置为1,不同(检查表here)。
从那时起,它只是计算 XOR产生的输出中的位并返回它们。