181. 將整數A轉換為B
阿新 • • 發佈:2019-02-11
提示
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; } };