题解 | #两个整数二进制位不同个数#
两个整数二进制位不同个数
https://www.nowcoder.com/practice/16e48900851646c0b2c6cdef9d7ea051
#include <stdio.h> int main() { int a, b; while (scanf("%d %d", &a, &b) != EOF) { // 注意 while 处理多个 case // 64 位输出请用 printf("%lld") to //定义一个变量接收两个数的异或值,如果两个数的相同二进制位一样则为假,反之则为真。得到的第三个数中1的个数就是两个数二进制不同的个数。 int c = a ^ b; //用于统计c二进制中1的个数 int count = 0; for(int i = 0;i < 32;i++) { if(c>>i & 1) { count++; } } printf("%d\n", count); } return 0; }