由于十进制整数转二进制位数可能超范围,所以最好用数组来放二进制数,因为只比较不同bit位,所以不用考虑前后逆序问题。
代码如下:
int countBitDiff(int m, int n)
{
int num = 0;
int numM[100] = {0};
int numN[100] = {0};
int i = 0;
int temp = 0;
while(m)
{
temp = m % 2;
numM[i++] = temp;
m /= 2;
}
i = 0;
while(n)
{
temp = n % 2;
numN[i++] = temp;
n /= 2;
}
for(int j = 0;j < 100;j++)
{
if(numM[j] != numN[j])
{
num++;
}
}
return num;
}