191. Number of 1 Bits

来源:互联网 发布:微信载入数据失败 编辑:程序博客网 时间:2024/06/06 01:42

1 题意

求一个32位的无符号整数在二进制下有多少个1

2 解题思路

两种办法,一种是迭代求出整数的二进制,但是如果无符号整数的值大于有符号的整数,那么将得到-1

public class Solution {    // you need to treat n as an unsigned value    public int hammingWeight(int n) {        int ans = 0;        while (n != 0){            ans += n % 2;            n /= 2;        }        return ans;    }}

第二种方法是不停地清除n的二进制表示中最右边的1,这个适用所有的整数

public class Solution {    // you need to treat n as an unsigned value    public int hammingWeight(int n) {        int ans = 0;        while (n!=0){            ans++;            n &= (n-1);        }        return ans;    }}

3 参考代码

public class Solution {    // you need to treat n as an unsigned value    public int hammingWeight(int n) {        int ans = 0;        while (n!=0){            ans++;            n &= (n-1);        }        return ans;    }}
原创粉丝点击