Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)

 更新时间:2015年06月20日 11:10:45   投稿:junjie  
这篇文章主要介绍了Java数据结构及算法实例:快速计算二进制数中1的个数(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;   
 } 
}

相关文章

  • myBatis实现三级嵌套复杂对象的赋值问题

    myBatis实现三级嵌套复杂对象的赋值问题

    这篇文章主要介绍了myBatis实现三级嵌套复杂对象的赋值问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • java 中Object与Objects的区别在哪里

    java 中Object与Objects的区别在哪里

    这篇文章主要介绍了java 中Object与Objects的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • SpringBoot接口防重复提交的三种解决方案

    SpringBoot接口防重复提交的三种解决方案

    在Web开发中,防止用户重复提交表单是一个常见的需求,用户可能会因为网络延迟、误操作等原因多次点击提交按钮,导致后台接收到多个相同的请求,本文将介绍几种在Spring Boot中实现接口防重复提交的方法,需要的朋友可以参考下
    2024-11-11
  • sharding-jdbc中的事务详细解读

    sharding-jdbc中的事务详细解读

    这篇文章主要介绍了sharding-jdbc中的事务详细解读,sharding-jdbc在分库分表方面提供了很大的便利性,在使用DB的时候,通常都会涉及到事务这个概念,而在分库分表的环境上再加上事务,就会使事情变得复杂起来,需要的朋友可以参考下
    2023-12-12
  • Java中获取 List中最后一个元素3种方法以及实际应用

    Java中获取 List中最后一个元素3种方法以及实际应用

    这篇文章主要给大家介绍了关于Java中获取 List中最后一个元素3种方法以及实际应用的相关资料,由于List的索引是从0开始的,所以最后一个元素的索引是List的大小减1,需要的朋友可以参考下
    2023-11-11
  • java切分字符串的2种方法实例

    java切分字符串的2种方法实例

    在我们日常工作中经常遇到截取字符串的需求,下面这篇文章主要给大家介绍了关于java切分字符串的2种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 解决java.lang.NullPointerException报错以及分析出现的几种原因

    解决java.lang.NullPointerException报错以及分析出现的几种原因

    这篇文章介绍了解决java.lang.NullPointerException报错的方法,以及分析出现的几种原因。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • 详解如何解析pom文件方法示例

    详解如何解析pom文件方法示例

    这篇文章主要为大家介绍了详解如何解析pom文件方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Java集合系列之LinkedHashMap源码分析

    Java集合系列之LinkedHashMap源码分析

    这篇文章主要为大家详细介绍了Java集合系列之LinkedHashMap源码分析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Jenkins的安装配置详解

    Jenkins的安装配置详解

    这篇文章主要介绍了Jenkins的安装配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06

最新评论