【leetcode】【Numbers of 1 bits】java >>> &符号

本文介绍Java中的位运算符,包括按位与(&)和无符号右移(>>>)的操作方式及应用。通过具体实例展示了如何使用这些位运算符来计算一个整数二进制表示中1的个数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、java &:按位与,m & 1:如果结果为1,则m的二进制数的最后一位为1;如果结果为0,则m的二进制数的最后一位为0;m自动进行二进制转换,不需特意转换;

2、java >>>:无符号数的右移一位,即如果m=22,二进制数为00010110,m>>>1结果为00001011;右移一位不足的补0;如果m=-22;二进制数为11101001,m>>>1结果为01110100,移出去的位数被丢弃;

3、java中if的条件只能为true、false,不可谓0,1;即if(m & 1)不符合语法规则;

public class Solution {

    // you need to treat n as an unsigned value

    public int hammingWeight(int n) {

        int num = 0 , m = n;

        while(m != 0){

            num = num + (m & 1);

            m= m>>>1;

        }

        return num;

    }

}


详细讲解:

Java算法总结:输入一个整数,求该整数的二进制表示中有多少个1 - 不精通则死 - 博客频道 - youkuaiyun.com http://blog.youkuaiyun.com/litton_van/article/details/6656717

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值