问题描述:给定两个正整数A和B,问A和B的二进制表示中有多少位不同?
解题思路:对A和B异或操作,转换为求一个二进制数中位数为1的问题。
int Count(int A,int B)
{
int num = 0;
int v = A^B;
while(v)
{
if(v % 2 == 1)
{
num++;
}
v = v/2;
}
return num;
}
int Count(int A,int B)
{
int num = 0;
while(v)
{
num += v & 0x01;
v >>= 1;
}
return num;
}
int Count(int A,int B)
{
int num = 0;
while(v)
{
v &= (v-1);
num++;
}
return num;
}