#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取模后为11110对2取模后为0 则每次取模相当于得到的是该次循环二进制的最后一位1111对2取整后为1111110对2取整后为111取整相当于将二进制最后一位去掉,开始下次循环
另外:
m /= 2;n /= 2;
可换成移位:
m = m >> 1;n = n >> 1;