Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
作者:junjie 发布时间:2022-07-31 14:39:23
标签:Java,数据结构,算法,Fast,Bit,Counting
/**
* 快速计算二进制数中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;
}
}


猜你喜欢
- 一、运行class文件执行带main方法的class文件,命令行为:java <CLASS文件名>注意:CLASS文件名不要带文
- 如果想实现一个在桌面显示的悬浮窗,用Dialog、PopupWindow、Toast等已经不能实现了,他们基本都是在Activity之上显示
- 1、创建实体属性标记public class CellAttribute : Attribute {&n
- Spring内置 * 对于 Web 应用来说,ServletContext 对象是唯一的,一个 Web 应用,只有一个ServletCont
- 其实这个http下载器的功能已经相当完善了,支持:限速、post投递和上传、自定义http header、设置user agent、设置ra
- 本文实例为大家分享了java将一个目录下的所有数据复制到另一个目录下的具体代码,供大家参考,具体内容如下/* 将"C:\\Java
- Hystrix Dashboard,它主要用来实时监控Hystrix的各项指标信息。通过Hystrix Dashboard反馈的实时信息,可
- 问题背景昨晚同事找我帮他看一个问题,他使用mybatis-plus中提供的updateById方法,想将查询结果中某个字段原本不为null的
- Swagger以及knife4j基本使用Swagger 介绍:官网:https://swagger.io/Swagger是一个规范和完整的框
- 在编程过程中一定要注意代码命名的规范性,否则在使用和维护过程中将造成很大的麻烦,这也是一种良好的编码习惯。看下面代码,除了userPass命
- 本文章主要讲二维数组定义,用法。1.什么是二维数组在二维数组多个元素为一维数组的数组就称为二维数组2.定义格式格式一:元素的数据类型[][]
- 前言本问主要介绍DataBinding在Android App中的使用方法。数据绑定是将“提供器”的数据源与“消费者”绑定并使其同步的一种通
- 本文以实例形式讲述了C#泛型的用法,有助于读者深入理解C#泛型的原理,具体分析如下:首先需要明白什么时候使用泛型:当针对不同的数据类型,采用
- 1.需求背景需要实现一个动态加载但不显示出来的视图,且该视图上有个动态生成的二维码,最后用其去生成一张快照(也就是图片)。(常见这种情况是来
- 本文实例讲述了C#实现读取匿名对象属性值的方法。分享给大家供大家参考,具体如下:通过new出匿名对象,可以直接调用该匿名对象的属性名,获取属
- 前言OpenCVSharp是OpenCV的.NET wrapper,是一名日本工程师开发的,项目地址为:https://github.com
- 目录面试题1:如何判断对象是否存活1.引用计数算法2.可达性分析算法面试题2:哪些对象可以作为GC Roots?面试题3:你了解的对象引用方
- BeanPostProcessor接口作用:如果我们想在Spring容器中完成bean实例化、配置以及其他初始化方法前后要添加一些自己逻辑处
- 最近看到一道有点意思的逻辑算法题,便着手实现一下。题目是要求打印 出N*N顺时针螺旋数组,规律如下:// 1 2 &
- /** * 考拉兹猜想:Collatz Conjecture * 又称为3n+1猜想、冰雹猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜