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

原创 2013年12月04日 22:16:00

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
 }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》)

题目: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution { ...

剑指Offer(java答案)

剑指Offer(java答案) 剑指Offerjava答案 3二维数组中的查找4替换空格5从尾到头打印链表6重建二叉树7用两个栈实现队列8旋转数组的最小数字9斐波那契数...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

剑指Offer(java答案)

剑指Offer(java答案)剑指Offerjava答案 5从尾到头打印链表 6重建二叉树 33把数组排成最小的数 34丑数 35第一个只出现一次的字符 36数组中的逆序对 37两个链表的第一个公共交...

Java求一个整数的二进制中1的个数

常规解法。 思路:将整数n与1进行与运算,当整数n最低位是1时,则结果非零,否则结果为0。 然后将1左移一位,继续与n进行与运算,当次低位是1时,结果非零,否则结果为0。 ...

java 判断整数二进制中1的个数

题目:请实现一个函数,输入一个整数,输出该数二进制中1的个数。解法1:考虑到输入的整数可能是负数,所以不能使用右移运算,这里可以采取左移运算。这个解法中循环的次数等于整数二进制的位数。比如java i...

Java中整数问题及整数转换为二进制总结

说明了Java中整数的机制,以及整数转换为二进制时方法的总结,希望大家提意见!

Java算法之二--二进制1的个数问题--位运算

大家好我是M1ko,今天给大家分享的算法是关于二进制运算的问题,说到二进制,一个程序员第一个反应肯定是位运算,这一方面也一直是自己的薄弱点,好的废话不多说开车出发。 首先上题目地址:赛码网 上题目...

如何判断一个数是否为2的N次方

题目:给定一个整数num,判断这个整数是否是2的N次方。比如,2,4,8是2的那次方,6,10不是2的N次方。 请看下面的程序: public static bool Check1...

同时找出数组的最大值和最小值,要求时间复杂度为o(n)

#include void max_min(int A[],int n,int& max,int& min) { int i; if(n%2==0) { if(A[0]>A[1]) { max=...

[Java]练习题006: 求两个数的最大公约数和最小公倍数

【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 import java.util.*; public class Test6 { public...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)