【Leetcode】程序员面试金典-面试题 05.06. 整数转换

【Leetcode】程序员面试金典-面试题 05.06. 整数转换

题目

整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。

思路

  • 通过位运算 找出不同的位的数字 即改变的位数
  • 11101 和 01111 进行异或运算 最后计算1的个数
  • 计算1的个数:思想:找出当前数字中最靠右边的1

代码

class Solution {
public:
    int convertInteger(int A, int B) {
        // 通过位运算 找出不同的位的数字  即改变的位数
        // 11101 和  01111 进行异或运算  最后计算1的个数
        unsigned int n = A ^ B;
        int count = 0;
        // 思想:找出当前数字中最靠右边的1

        while(n)
        {
            ++count;
            n = n & (n - 1);
        }
        return count;
    }
};

你可能感兴趣的:(#,程序员面试金典,#,Leetcode,leetcode,面试,算法)