版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013241673/article/details/79640025
统计一个数对应二进制中【1】的个数或者【0】的个数最佳方法
一、二进制中【1】的个数
/**
* countOne TODO : 统计一个数所对应二进制中 1 的个数最好的方法
* @param num 该数所对应的十进制
* @return 该数所对应二进制中 1 的个数
* @author zhiman
* @date 2018/03/21 下午2:39:05
*/
public static int countOne(int num) {
int count = 0;
while (num != 0) {
count++;
// 将数中所有的二进制1位置0
num = num & (num - 1);
}
return count;
}
二、二进制中【0】的个数
/**
* countOne TODO : 统计一个数所对应二进制中 0 的个数最好的方法
* @param num 该数所对应的十进制
* @return 该数所对应二进制中 0 的个数
* @author zhiman
* @date 2018/03/21 下午2:39:05
*/
public static int countZero(int num) {
int count = 0;
while ((num+1) != 0) {
count++;
// 将数中所有的二进制0位置1
num = num | (num + 1);
}
return count;
}