/**
* 题目描述 世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
* 示例1 输入
* 1999 2299
* 输出
* 7
*
* @author 崔洪振367
* @version 创建时间:2017年6月30日 下午10:34:53
* 解题思路:将两个数逐位相与,如果不等,则计数器加1.
*/
public class 懂二进制 {
/**
* 获得两个整形二进制表达位数不同的数量
* @param m 整数m
* @param n 整数n
* @return 整型
*/
public static void main(String[] args){
System.out.println(countBitDiff(1999, 2299));
}
public static int countBitDiff(int m, int n) {
int cal = 1;
int a;
int b;
int count = 0;
//在32位的机器中,整数的位数有32位,因此循环32计算即可
for(int i=0; i<31; i++){
a = m&cal;
b = n&cal;
if(a!=b){
count++;
}
m = m>>1;
n = n>>1;
}
return count;
}
}
2016小米-懂二进制-Java
最新推荐文章于 2020-12-15 13:05:58 发布