/**
* 功能:确定需要改变几个位,才能将整数A转成B。
*/
两种方法:
方法一:
/**
* 思路:使用异或操作。
* 确定A^B有几个位为1。
* @param a
* @param b
* @return
*/
public static int bitSwapRequired(int a,int b){
int count=0;
for(int c=a^b;c!=0;c>>=1){
count+=c&1;
}
return count;
}
方法二:
/**
* 思路:不断反转最低有效位,计算要多少次c才会变成0。
* @param a
* @param b
* @return
*/
public static int bitSwapRequired2(int a,int b){
int count=0;
for(int c=a^b;c!=0;c=c&(c-1)){
count++;
}
return count;
}