1. 程式人生 > >181. 將整數A轉換為B

181. 將整數A轉換為B

提示

        LintCode中的相關演算法題實現程式碼,可以在我的GitHub中下載。

題目需求

如果要將整數A轉換為B,需要改變多少個bit位?

樣例

如把31轉換為14,需要改變2個bit位。

(31)10=(11111)2

(14)10=(01110)2

解題思路

    將兩個數相與,就可以得到不相同的1的個數的整數,然後再次判斷1個數即可。

實現程式碼

class Solution {
public:
    /**
     * @param a: An integer
     * @param b: An integer
     * @return: An integer
     */
    int bitSwapRequired(int a, int b) {
        // write your code heref
        if(a==b) return 0;
        int num=a^b;
        int length=0;
        while(num)
        {
            num=num&(num-1);
            length++;
        }
        return length;
    }
};