【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;
}
};