您的位置:首页 > 其它

【位运算】二进制中1的个数

2016-09-04 20:15 239 查看
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

public class Solution {

/**
* 解法1:数字1每次左移一位,与n进行与运算,结果为1代表n的当前bit位是1
*
* @param n
* @return
*/
public int NumberOf1(int n) {

int count = 0;
int flag = 1;

while (flag != 0) {
if ((n & flag) != 0) {
count++;
}
flag = flag << 1;
}

return count;
}

/**
* 解法2:n不为0,代表n中至少存在一个bit位为1,首先个数记一次,然后通过(n-1)&n消除n中一个1,循环这个操作
*
* @param n
* @return
*/
public int NumberOf2(int n) {

int count = 0;
while (n != 0) {
++count;
n = (n - 1) & n;
}
return count;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: