给两个数,算出两个数不同位一共有多少个。
使用异或操作,相同为1,不同为0,然后遍历一次,每次右移一位,然后与1与,如果等于1,表示这位为1。效率还可以
int hammingDistance(int x, int y) {
int ttt = x ^ y;
int result = 0;
int i ;
for( i = 1; i < 32; ++i)
{
int t = ttt & 1;
if ( t == 1)
{
result ++;
}
ttt = ttt >> 1;
}
return result;
}
本文介绍了一种通过异或操作来高效计算两个整数在二进制表示下不同位的数量的方法。具体步骤包括:首先对两个数进行异或运算得到只包含不同位的新数;然后对该数的每一位进行检查,如果该位为1则计数加一,最终得到的就是不同位的总数。
337

被折叠的 条评论
为什么被折叠?



