Java 求出一个整数的二进制中 1 的个数

这篇文章详细介绍了Java Integer类中的bitCount方法,用于统计指定整数二进制表示中1的个数。通过实例演示如何找到2的幂次方整数中1的位置。掌握这个技巧对于处理位操作和理解计算机底层原理很有帮助。

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

Interger 类中有方法 bitCount

方法解释:

Returns the number of one-bits in the two’s complement binary representation of the specified int value. This function is sometimes referred to as the population count.
Parameters:
i the value whose bits are to be counted
Returns:
the number of one-bits in the two’s complement binary representation of the specified int value.

简单的说:

返回给定int值的二进制表示中 1 的个数

如果要求一个是 2的幂 的int值中,其二进制表示时 1 所在的位置(从低位算起)。
可以通过如下方法:

int num; // 假定其为2的幂
int pos = Integer.bitCount(num - 1) + 1; // 求位置
// 对于一个2的幂数的二进制表示来说
// 其减去1后,1所在位置之后就全为1
// 因而bitCount会直接返回之前的 1 所在的位置-1的值,再加 1 即为之前位置
/*
比如 4
二进制表示 0000 0100
减1
二进制表示 0000 0011
求bitCount,得2,再加1,得3
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三更鬼

谢谢老板!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值