描述
如果要将整数A转换为B,需要改变多少个bit位?
Both n and m are 32-bit integers.
您在真实的面试中是否遇到过这个题?
是
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
先将两个数异或得到的二进制数中,1代表需要改变的位,所以题目就变成求一个数的二进制有多少个1,因为一个数与运算本身减1的数,会将该整数最右边的1变为0,所以重复操作循环到0,即得到1的位数。
class Solution {
public:
/**
* @param a: An integer
* @param b: An integer
* @return: An integer
*/
int bitSwapRequired(int a, int b) {
// write your code here
int change=a^b;
int count=0;
while(change!=0){
change&=(change-1);
count++;
}
return count;
}
};