java里的Integer.bitCount
Updated:
Contents
* 如何判断一个数里面有几个1?
Java里有个方法“Integer.bitCount(int x)”可以计算出一个数二进制里1的个数
1 | public static int bitCount(int i) { |
感觉很神奇的样子。。。为啥是这样的呢?
先自己实现一个计算1的方法1
2
3
4
5
6
7
8int bitCount(int n) {
int count = 0;
for (int i = 0; i < 32; i++) {
count += n & 1;
n >>= 1;
}
return count;
}
可以看出,当n较小的时候,n>>1过几次后就变成0了。
因此可以改为:(但是速度不会变快哦)1
2
3
4
5
6
7
8int bitCount(int n) {
int count = 0;
while(n != 0){
count += n & 1;
n >>= 1;
}
return count;
}