使用到的知识:
- 异或操作:相同比特位为0,不同比特位为1。
- 利用按位于运算,求一个数字二进制表示中1的个数。
思路:
利用异或操作巧妙的将问题转换为求一个数二进制表示中1的个数。
#include <iostream>
using namespace std;
/* 求两个整型二进制中有多少个不同位 */
int main()
{
int a;
int b;
cin >> a;
cin >> b;
/* 异或 相同位为0 不同位为1*/
int count = 0;
a = a^b;
while (a)
{
a = a & (a - 1);
count++;
}
cout << count << endl;
return 0;
}