A = 100
B = 50
两个数的二进制位数差异有几个?
先转换成二进制格式
A = 1100100
B = 0110010
掰指头用眼睛数一下,是4个位不同。
那么对比的方式可以用XOR解决。
A XOR B = 1010110
那么不同的位就转换为了1,相同的位为0.
那么不同的个数 = 1的个数。
int num = 0;
int value = A ^ B;
while(value)
{
num += value & 0x1;
value>>=1;
}