Java實現輸入一個整數,輸出該數二進位制表示中1的個數
阿新 • • 發佈:2019-01-02
public class Test { // 利用Java內建toBinaryString方法來實現 public static int numberOfOne1(int n) { int count = 0; String str = Integer.toBinaryString(n); for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == '1') { count++; } } return count; } /* * 利用位運算來實現 思路: 將n與n-1做與運算,會把最右邊的1去掉。 比如: 1100 & 1011 = 1000 ,即 12 & 11 = 8 * 再利用計算器count++計算出有多少個 1 即可。 */ public static int numberOfOne2(int n) { int count = 0; while (n != 0) { count++; n = n & (n - 1); } return count; } public static void main(String[] args) { System.out.println("------------------第一種方法------------------"); System.out.println("數字 3 的二進位制表示中有 " + numberOfOne1(3) + "個1"); System.out.println("數字 -3 的二進位制表示中有 " + numberOfOne1(-3) + "個1"); System.out.println("\n------------------第二種方法------------------"); System.out.println("數字 3 的二進位制表示中有 " + numberOfOne2(3) + "個1"); System.out.println("數字 -3 的二進位制表示中有 " + numberOfOne2(-3) + "個1"); } }