题目描述
编写一个函数,确定需要改变几个位,才能将整数A转变成整数B。
给定两个整数int A,int B。请返回需要改变的数位个数。
测试样例:
10,5
编写一个函数,确定需要改变几个位,才能将整数A转变成整数B。
给定两个整数int A,int B。请返回需要改变的数位个数。
测试样例:
10,5
返回:4
思路:这道题其实意思就是让你找出两个数有几个位不同,我们先用异或再看这两个数异或后的结果二进制有几个1,则说明要改变几个位。
#include<iostream>
using namespace std;
int CalcCost(int A,int B)
{
int C = A ^ B;
int count = 0;
while(C)
{
count++;
C = C & (C -1);
}
return count;
}
int main()
{
int ret = CalcCost(10,5);
cout << ret <<endl;
return 0;
}