【算法】求两个数中,bit位不同的个数

来源:互联网 发布:汽车上哪里用单片机 编辑:程序博客网 时间:2024/05/06 12:48

问题描述:

两个int32位)整数mn的二进制表达中,有多少个位(bit)不同? 

分析:

a^b是位运算中异或的意思,相同为0不同为1,对两个数进行异或之后,计算其中1的位数,即为最终结果。有一个小技巧,x & (x-1)会把x中最右边为1的bit变成0,循环每次去掉最右边的一位1,直到异或的结果全部变为0。
代码如下:


 static int calculateNotSam(int a,int b){    int temp=a^b;    int number=0;    while(temp!=0){    temp&=(temp-1);    number++;    }    return number;    }


阅读全文
0 0
原创粉丝点击