Number of 1 Bits

来源:互联网 发布:手机存储卡数据恢复 编辑:程序博客网 时间:2024/06/05 04:02

解题思路:32位有符号整数的表示范围:-2147483648—214748364732位无符号整数的表示范围:0—2147483647+2147483648。如果输入的无符号数大于2147483647,则会显示成负数,所以当输入数字小于0时,只需加上2147483647+1,之后按照整数求1的个数,此时需要将1的个数加1.

Java代码实现:

public class Solution {    // you need to treat n as an unsigned value    public int hammingWeight(int n) {        int count=0;        if(n==0) return 0;        if(n<0) {            System.out.print(n);            n+=2147483647+1;            System.out.print(n);            count++;        }                while(n!=0){            int mod=n%2;            if(mod==1) count++;            n=n/2;        }                return count;    }}
原题题目:https://leetcode.com/problems/number-of-1-bits/



0 0