lintcode-将整数A转换为B-181

如果要将整数A转换为B,需要改变多少个bit位?


样例

如把31转换为14,需要改变2个bit位。

(31)10=(11111)2

(14)10=(01110)2

class Solution {
public:
   
    int bitSwapRequired(int a, int b) {
       int tmp=a^b; //异或运算,对应位的值相同异或为零,不同为一,两数有多少位不同tmp中就有多少个一
       int ret=0;
       while(tmp){ //转换成求tmp“1”的个数
           tmp&=(tmp-1);
           ++ret;
       }
       return ret;
    }
};


你可能感兴趣的:(lintcode-将整数A转换为B-181)