Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
作者:junjie 时间:2022-07-31 14:39:23
/**
* 快速计算二进制数中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;
}
}
标签:Java,数据结构,算法,Fast,Bit,Counting
0
投稿
猜你喜欢
java中treemap和treeset实现红黑树
2021-12-05 07:22:29
java使用TimerTask定时器获取指定网络数据
2022-08-14 10:52:20
Java 逻辑控制详解分析
2023-08-13 20:08:11
一篇文章带你了解Java 中序列化与反序列化
2021-11-27 21:19:27
Spring Boot2.x如何自定义Endpoint
2023-03-05 18:04:12
C#使用文件流读取文件的方法
2022-06-27 20:17:12
Java抽象类和接口的区别详情
2023-05-23 20:09:59
基于Java实现简单贪吃蛇游戏
2022-08-07 02:09:44
java实现简单的猜数字小游戏
2023-11-11 12:55:40
利用Flutter制作经典贪吃蛇游戏
2023-07-21 07:04:13
Spring Cloud gateway 网关如何拦截Post请求日志
2022-06-19 03:19:46
Windows实现Flutter环境搭建及配置这一篇就够了
2023-07-03 22:49:30
java Map接口子类HashMap遍历与LinkedHashMap详解
2021-11-18 04:43:38
java微信开发中的地图定位功能
2023-01-27 17:37:52
Spring Bean后处理器详细介绍
2021-06-27 07:29:06
深入学习Java单元测试(Junit+Mock+代码覆盖率)
2021-06-17 00:39:13
SpringMVC中@ModelAttribute与@RequestBody的区别及说明
2023-11-24 12:09:51
C#实现只运行单个实例应用程序的方法(使用VB.Net的IsSingleInstance)
2023-06-16 07:54:29
java基于UDP实现在线聊天功能
2021-06-08 00:01:44
深入理解Java设计模式之外观模式
2023-05-02 09:48:00