如果要将整数A转换为B,需要改变多少个bit位?
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
class Solution {
public:
/**
*@param a, b: Two integer
*return: An integer
*/
int bitSwapRequired(int a, int b) {
// write your code here
int count = 0;
int c = a ^ b;
for(int i = 0; i < 32; i++){//int为32位系统
if((a & 1) != (b & 1)){
count = count + 1;
}
a = a>>1;
b = b>>1;//负数右移,前面补1,可能导致无限loop
}
return count;
}
};