1,解题思路
1,m和n进行异或运算 ,因为异或运算相同为0 不同为1 ,可以统计出m和n不同的二进制数
比如 10的二进制是1010 13的二进制是1101 10异或13 得到1101 其中有多少1 说明m到n需要改变几位
2 统计m和n异或的结果中的1,即m改变了几位。
代码
public static void main(String arg[]){
int b=test(10,13);
System.out.println(b);
}
public static int test(int m,int n){
return NumberOf1(m^n);
}
public static int NumberOf1(int n) {
int count=0;
while(n!=0){
n=n&(n-1);
count++;
}
return count;
}
网友评论