二进制中有多少个1?

 

计算在一个 32 位的整数的二进制表示中有多少个 1?

 

思路:

1、首先判断整数正负;

2、循环31次,每次循环对整数进行无符号右移(>>>),然后判断整数的二进制表示的最后一位是否为1?

 

public class Solution {
    public int countOnes(int num) {
        int result = 0;
        if(num < 0){
            result = 1;
        }
        int i = 31;
        while (i > 0){
            if((num & 1) == 1){
                result ++;
            }
            num = num >>> 1;
            i --;
        }
        return result;
    }
};

  

posted on 2017-09-30 11:10  loveLifeloveSport  阅读(348)  评论(0编辑  收藏  举报