具体应用
1.世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
输入例子:
1999 2299
输出例子:
7
思路:
注意负数(先转换为正数),int 有32位,故:先将两个数异或,结果&上掩码x=1;如果真,则count++;然后m,n 分别左移1位(循环32次)
#include <iostream>
using namespace std;
int main()
{
int m, n;
int count;
while (cin >> m >> n){
int i = 32;
int x = 1;
if (m < 0)m = -m;
if (n < 0)n = -n;
count = 0;
while (i--){
if ((m^n)&x)count++;
m = m >> 1;
n = n >> 1;
}
cout << count;
}
system("pause");
}