求两个数二进制中不同位的个数 int main() { int n = 0; int m = 0; scanf("%d %d", &n, &m); int cnt = 0; int ret = m ^ n;//按位异或,就是找出m和n有多少位不同,不同为1,存在ret中 while (ret) { cnt++; ret = ret & (ret - 1); //找出ret中一共有多少个不同的1 } printf("有%d 个bit位不同", cnt); return 0;