先对AB两数进行异或运算,那么A,B位不同的结果位中为1,位相同的结果位上为0。异或运算后便转化成了求1的个数问题
参考http://hi.baidu.com/azuryy/item/be4fd72c77cef4d00e37f9d3
int count(int A,int B){
int num=0;
int v=A^B;
while(v){
v=v&(v-1);
num++;
}
return num;
}
先对AB两数进行异或运算,那么A,B位不同的结果位中为1,位相同的结果位上为0。异或运算后便转化成了求1的个数问题
参考http://hi.baidu.com/azuryy/item/be4fd72c77cef4d00e37f9d3
int count(int A,int B){
int num=0;
int v=A^B;
while(v){
v=v&(v-1);
num++;
}
return num;
}