采用位运算。将num1和num2按位异或得到num,再统计num中二进制1的个数,即是不同的位数。代码比较简单,如下:
#include <iostream>
using namespace std;
int countDiffBin(int num1, int num2) {
int num = num1^num2;
int cnt = 0;
while(num) {
++cnt;
num = num&(num-1);
}
return cnt;
}
int main()
{
int n1, n2;
while(cin >> n1 >> n2) {
cout << countDiffBin(n1, n2) << endl;
}
return 0;
} 
京公网安备 11010502036488号