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