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

来源:互联网 发布:mac搜狗五笔不能打字 编辑:程序博客网 时间:2024/06/09 11:40

如果要将整数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;    }};


0 0