剑指Offer(十一)二进制中1的个数(Java版 )

一、题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

二、直接上代码分析

public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        int k = 0x01;
        if( n == 0 ) count = 0;
        //先不管符号位,直接31次判断。
        for( int i = 0;i < 31;i++ ){
            if( (n & k) > 0 ){
                count++;
            }
            k = k << 1;
        }  
        //如果是符号的话,还有加上符号位
        if( n < 0 )count++;
        return count;
    }
}

运行结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41835916/article/details/80667069