题目
编写一个函数,输入是一个无符号整数,返回的是它所有 位1 的个数(也被称为汉明重量)。
例如,32位整数 '11' 的二进制表示为 00000000000000000000000000001011
,所以函数返回3。
思路
位运算。数字分别和1,2,4,8……2^31做与运算,如果结果不是0说明对应位置上是1。统计个数即可。
代码
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int count = 0;
int c = 1;
for(int i = 0; i < 32; i++) {
if((n & (c << i)) != 0)
count++;
}
return count;
}
}
网友评论