剑指Offer--【二进制中1的个数】--java

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

思路:

因为题目给出的是int类型,java中的int类型用32位表示,把这个数依次无符号右移(考虑到负数所以选择无符号右移)然后与1作与运算。如果结果为1则count自增

代码:

public class Solution {
    public int NumberOf1(int n) {
        int sum=0;
        for(int i=0;i<32;i++){
            if((n>>>i&1)==1){
                sum++;
            }
        }
        return sum;
    }
}
发布了146 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43689040/article/details/102411687