完全解读 Java中的 Integer.bitCount(int i)源码

本文深入解析Java中的Integer.bitCount(int i)方法,介绍如何计算整数二进制表示中1的个数。通过逐行解释源码,包括位运算、无符号右移和按位与的使用,帮助读者理解该方法的工作原理。
摘要由CSDN通过智能技术生成

深入解读 Java中的 Integer.bitCount(int i)源码

  有很多人建议我在学习的过程中要养成写博客的习惯,遇到不懂的问题别人的博客都会讲解的很详细。一直想写但却有感觉有些耽误时间,刚好趁着十一假期老家一直在下雨有点时间,写篇博客充实下自己,顺便熟悉下markdown编辑器,嘻嘻嘻,之前没用过。
 


前几天我在牛客刷题的时候看到这样的一题:

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

猛地一看很简单,没几分钟就写出了第一版的代码:

public class Solution {
    public  int NumberOf1(int n) {
        int count=0;
        while(n!=0){
            count+=n&1;
            n=n>>>1;
        }
        return count;
    }
}

提交运行,通过所有的测试用例。

关于 count+=n&1

  我们知道一个数计算机中所有的数都是以二进制形式呈现的,一个数是偶数那么它的最后一位一定是0,例如2=(byte)10 ,4=(byte)100,奇数的最后第一位一定是1,按位与上一个1奇数结果为1,偶数结果为0,不懂按位与的自行百度,讲的很详细。

关于n=n>>>1;

  无符号右移高位补零,正负数都补零,这里就不讲移位运算了不懂的依然自行百度。

Java中的bitCount方法

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值