C语言计算两个整数二进制不同位的个数
两个数异或是相同为0,相异为1。结果是一个新的二进制序列,利用异或的这个特性,异或之后计算这个结果二进制里有多少个1即可。
#include <stdio.h>
int main() {
int num1 = -1;
int num2 = 10;
int res = num1 ^ num2;
int count = 0;
// 11111111 11111111 11111111 11111111
// 00000000 00000000 00000000 00001010
// 11111111 11111111 11111111 11110101
while (res) {
res = res & (res - 1);
count++;
}
printf("%d", count); // 30
}