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
  • asp之家 软件编程 m.aspxhome.com