【面试题】求两个数的2进制差异位的个数

来源:互联网 发布:python里的while break 编辑:程序博客网 时间:2024/06/05 16:47

A = 100B = 50

两个数的二进制位数差异有几个?


先转换成二进制格式

A = 1100100B = 0110010

掰指头用眼睛数一下,是4个位不同。


那么对比的方式可以用XOR解决。


A XOR B = 1010110
那么不同的位就转换为了1,相同的位为0.


那么不同的个数 = 1的个数。

int num = 0;int value = A ^ B;while(value){num += value & 0x1;value>>=1;}



原创粉丝点击