题目
描述
如果要将整数A转换为B,需要改变多少个bit位?
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
解答
思路
- 将两个数按位异或
- 统计异或结果中1的个数(网上找的方法,太6了)
代码
class Solution {
/**
*@param a, b: Two integer
*return: An integer
*/
public static int bitSwapRequired(int a, int b) {
// write your code here
int c = a^b;
int sum = 0;
while(c!=0){
c = c&(c-1);
sum++;
}
return sum;
}
};