java學習筆記-獲取正數的原碼和負數的補碼
阿新 • • 發佈:2019-01-05
輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。
import java.util.ArrayList; import java.util.List; /** * * @author wms * @desc 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示。 * */ public class OneOfNum { public static void main(String[] args) { System.out.println(getNumOf1(10)); } public static int getNumOf1(int n) { int k = 0; if (n == 0) { k = 0; } if (n < 0) { k = getNum2(n); } if (n > 0) { k = getNum1(n); } return k; } public static int getNum1(int n) { int k = 0; String string = Integer.toBinaryString(n); for (int i = 0; i < string.length(); i++) { if (string.charAt(i) == '1') { k++; } } return k; } // int 整形 佔4個位元組,32位 public static int getNum2(int a) { StringBuffer buffer = new StringBuffer(); for (int i = 0; i < 32; i++) { int t = (a & 0x80000000 >>> i) >>> (31 - i); buffer.append(t); } int k = 0; for (int i = 0; i < buffer.length(); i++) { if (buffer.charAt(i) == '1') { k++; } } return k; } }