#include<stdio.h>
#include<stdlib.h>
int BitDiffer(int m,int n)
{
int i = 0;
int count = 0;
for (; i < 32; i++) /*在计算机内是按32位二进制来存储的,循环32次*/
{
if (m % 2 != n % 2)
{
count++;
}
m /= 2;
n /= 2;
}
return count;
}
int main()
{
int m = 0;
int n = 0;
scanf("%d%d", &m, &n);
int ret = BitDiffer(m,n);
printf("%d", ret);
system("pause");
return 0;
}
模除来获取每一位二进制位原理:
1111对2取模后为1
1110对2取模后为0
则每次取模相当于得到的是该次循环二进制的最后一位
1111对2取整后为111
1110对2取整后为111
取整相当于将二进制最后一位去掉,开始下次循环
另外:
m /= 2;
n /= 2;
可换成移位:
m = m >> 1;
n = n >> 1;