由于十进制整数转二进制位数可能超范围,所以最好用数组来放二进制数,因为只比较不同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; }