1.题目
整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。
示例1:
输入:A = 29 (或者0b11101), B = 15(或者0b01111)
输出:2
示例2:
输入:A = 1,B = 2
输出:2
提示:
A,B范围在[-2147483648, 2147483647]之间
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-integer-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.题解
异或运算
class Solution
{
public:
int convertInteger(int A, int B)
{
int count=0;
int t =32;
while(t--)
{
count += (A&1)^(B&1);
A>>=1;
B>>=1;
}
return count;
}
};
需要考虑当A,B为负数时如何操作。
class Solution
{
public:
int convertInteger(int A, int B)
{
unsigned int a=A,b=B;
int count=0;
while(a!=0||b!=0)
{
count += (a&1)^(b&1);
a>>=1;
b>>=1;
}
return count;
}
};