#include
#include
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;