#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> //求两个数二进制中不同位的个数 int NumberOf1(int n) { int count = 0; int i = 0; while (n) { n = n & (n - 1); count++; } return count; } int main() { /*int m = 22; int n = 33; int i = 0; int count = 0; for (i = 0; i < 32; i++) { if (((m >> i) & 1) != ((n >> i) & 1)) { count++; } } printf("%d\n", count); return 0;*/ int m = 0; int n = 0; int i = 0; int count = 0; scanf("%d %d", &m, &n); int ret = m ^ n;//异或相同为0,相异为1 count = NumberOf1(ret); printf("%d\n", count); //统计一下ret的2进制中有几个1,就说明m和n的二进制位中有几个位不同 }
浙公网安备 33010602011771号