【发布时间】:2014-04-24 03:31:26
【问题描述】:
汉明距离:
例如两个二进制数:1011和1000的HD(Hamming distance)是2。
10000 和 01111 的 HD 是 5。
代码如下:
谁能给我解释一下?
谢谢!
short HammingDist(short x, short y)
{
short dist = 0;
char val = x^y;// what's the meaning?
while(val)
{
++dist;
val &= val - 1; // why?
}
return dist;
}
【问题讨论】:
-
^是按位异或 en.wikipedia.org/wiki/Exclusive_or&是按位与 -
在 wikipedia en.wikipedia.org/wiki/Hamming_distance 你可能得到这个代码的地方有一个解释
-
我想知道的是,在面试时问这个问题如何告诉你候选人的技能,除了他们之前是否在面试中被问过这个问题,谷歌搜索它,并记住了答案?!您需要多久在生产代码中查找一次汉明距离?甚至为此使用 XOR?
标签: c++ short hamming-distance census