题解 | #整数转化#
整数转化
http://www.nowcoder.com/practice/c7df20a5a39e4357aecc1071e7fd523c
class Transform {
public:
int calcCost(int A, int B) {
// write code here
// A 和 B 异或后统计结果中的1的个数
/*
* 思路:A 需要变换 多少位 才能得到B,而位变换无非就是0-1,1-0的过程
* 所以,A和B之间 有多少的不同的0-1,1-0的变换就有需要多少位的变换,
* 也就是转换成A^B之后 1 的个数求解;
* 由于异或操作是 相同为0 不同为1 也即1-0,0-1的结果为1,
* 只需要A和B异或操作后,统计运算结果中1的个数即可
*/
int temp = A ^ B;
int counter = 0;
while(temp > 0)
{
if(temp & 1 == 1) counter++;
temp = temp >> 1;
}
return counter;
}
};