class Transform { public: int calcCost(int A, int B) { // write code here //需要改变的位的个数:即A和B不同值的位数(一个为0一个为1),都为0或1的话就不需要改变. 无论是A变B还是B变A. //所以用A^B可以得到全部有1的位就是需要改变的位。 int needchange = A ^ B; int count = 0; while(needchange){//needchange为0时停止; needchange &= needchange - 1;//将为1的最低位变为0,并计算个数+1,这样消了多少个1就说明需要改变多少个位。 count++; } return count; } };