将整数A转换为B
如果要将整数A转换为B,需要改变多少个bit位?
Both n and m are 32-bit integers.
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
如果要将整数A转换为B,需要改变多少个bit位?
Both n and m are 32-bit integers.
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
import java.util.Scanner;
/**
* 将整数A转换为B
如果要将整数A转换为B,需要改变多少个bit位?
Both n and m are 32-bit integers.
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
*
* @author Dell
*
*/
public class Test181 {
public static int bitSwapRequired(int a, int b)
{ if(a==b)
return 0;
int sum=0;
int c=a^b;
while(c!=0)
{
sum++;
c=c&(c-1);
}
return sum;
}
public static int bitSwapRequired1(int a, int b)
{ if(a==b)
return 0;
int sum=0;
for(int i=0;i<32;i++)
{
int temp1=(a>>i)&1;
int temp2=(b>>i)&1;
if(temp1!=temp2)
{
sum++;
}
}
return sum;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
System.out.println(bitSwapRequired(a,b));
}
}