題目
描述
如果要將整數(shù)A轉(zhuǎn)換為B洛口,需要改變多少個(gè)bit位?
樣例
如把31轉(zhuǎn)換為14试躏,需要改變2個(gè)bit位端姚。
(31)10=(11111)2
(14)10=(01110)2
解答
思路
- 將兩個(gè)數(shù)按位異或
- 統(tǒng)計(jì)異或結(jié)果中1的個(gè)數(shù)(網(wǎng)上找的方法,太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;
}
};