乐于学习、乐于分享、乐于总结

编程是一门技术,更是一门艺术

关于Java的一道题:"求二进制数中1的个数"的解法整理

package com.accp;

/**
 * 求二进制数中1的个数
 *
 * @author Administrator
 *
 */
public class BinaryConversion {

 /**
  * 解法一 通过相除和判断余数的值的方法计算
  *
  * @param num
  *            传入的数字
  * @return 二进制数1的个数
  */
 public static int CountOne(int num) {
  int counter = 0;
  while (num > 0) {
   if (num % 2 == 1) {
    counter++;
   }
   num = num / 2;
  }

  return counter;
 }

 /**
  * 解法二 位操作
  *
  * @param num
  * @return
  */
 public static int Counttow(int num) {
  int counter = 0;
  while (num > 0) {
   counter += num & 0X01;
   num >>= 1;
  }
  return counter;
 }

 /**
  * 解法三
  *
  * @param num
  * @return
  */
 public static int CountThree(int num) {
  int counter = 0;
  while (num > 0) {
   num = num & (num - 1);
   counter++;
  }
  return counter;
 }

 省略:

 // 解法四:分支操作
 // 解法五:查表法
 /**
  * 测试
  *
  * @param args
  */
 public static void main(String[] args) {

  System.out.println(CountOne(5));// 结果:2
  System.out.println(CountThree(31));// 结果:5
  System.out.println(Counttow(32));// 结果:1
 }
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011659172/article/details/17127423
文章标签: java 算法 二进制
个人分类: 编程试题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

关于Java的一道题:"求二进制数中1的个数"的解法整理

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭