1. 程式人生 > >關於Java的一道題:"求二進位制數中1的個數"的解法整理

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