Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
更新时间:2015年06月20日 11:10:45 投稿:junjie
这篇文章主要介绍了Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting),本文直接给出实现代码,代码中包含详细注释,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud)
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
/** * 快速计算二进制数中1的个数(Fast Bit Counting) * 该算法的思想如下: * 每次将该数与该数减一后的数值相与,从而将最右边的一位1消掉 * 直到该数为0 * 中间循环的次数即为其中1的个数 * 例如给定"10100“,减一后为”10011",相与为"10000",这样就消掉最右边的1 * Sparse Ones and Dense Ones were first described by Peter Wegner in * “A Technique for Counting Ones in a Binary Computer“, * Communications of the ACM, Volume 3 (1960) Number 5, page 322 */ package al; public class CountOnes { public static void main(String[] args) { int i = 7; CountOnes count = new CountOnes(); System.out.println("There are " + count.getCount(i) + " ones in i"); } /** * @author * @param i 待测数字 * @return 二进制表示中1的个数 */ public int getCount(int i) { int n; for(n=0; i > 0; n++) { i &= (i - 1); } return n; } }
相关文章
SpringCloud Gateway加载断言predicates与过滤器filters的源码分析
这篇文章主要介绍了SpringCloud Gateway加载断言predicates与过滤器filters的详细过程,本文通过源码给大家解析的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-05-05Java导出多个excel表打包到zip文件中供客户端另存为窗口下载实现方法
最近的项目有一个导出汇总数据的要求,考虑到用户软件的差异,所以要分别导出xls以及xlsx并且打包提供下载,下面这篇文章主要给大家介绍了关于Java导出多个excel表打包到zip文件中供客户端另存为窗口下载的实现方法,需要的朋友可以参考下2023-12-12
最新评论