1、题目描述
输入两个整数,求两个整数二进制格式有多少个位不同。
- 输入示例:
22 33
- 输出示例:
5
2、题目解析
- 解题思路:
两个数进行异或,将异或的结果与其减一进行与操作,直至为零,就是二进制不同位数的数量。 - 实例解释
1、22
和33
进行异或。
- | 十进制数 | 二进制数 |
---|---|---|
a | 22 | 10110 |
b | 33 | 100001 |
⊕ | 55 | 110111 |
2、然后数一下1
的个数,个数为5
。
3、参考答案
#include <iostream>
using namespace std;
int main(){
int n = 0;
int m = 0;
cin >> n >> m;
int num = n^m;
int count = 0;
while(num != 0){
if((num & 1) != 0)
++count;
num = num >> 1;
}
cout << count << endl;
return 0
}