程序員的數學1 之十進制轉2進制

方法一 :直接利用jdk的BigInteger操作

  public static String decimalToBinary(int decimalSource) {
        BigInteger bi = new BigInteger(String.valueOf(decimalSource)); // 轉換成 BigInteger 類型,默認是十進制
        return bi.toString(2); // 參數 2 指定的是轉化成二進制
    }

   說明:

   bi.to(n)的意思是轉成n進制。

方法二:餘數短除法除以二

   public static String decimalToBinary(int decimalSource) {
        StringBuilder sb = new StringBuilder();
        while (decimalSource != 0) {
            sb.append(decimalSource % 2);
            decimalSource = decimalSource >> 1;
        }
        return sb.reverse().toString();
    }

 方法三 :

public static String decimalToBinary(long decimalSource) {
        StringBuffer sb = new StringBuffer();
        int length = (int) (Math.log(decimalSource) / Math.log(2));
        //取餘數
        decimalSource = (int) (decimalSource - Math.pow(2, length));
        if (decimalSource == 0) {
            return "0";
        }    
          // 先取最高位 
        sb.append(1);
        for (int i = length - 1; i >= 0; i--) {
            //餘數檢查深度
            int power = (int) (Math.log(decimalSource) / Math.log(2));
            //餘數 深度 = length - 1 說明 length - 1位 爲1
            if (power == i) {
                decimalSource = (int) (decimalSource - Math.pow(2, i));
                sb.append(1);
            } else {
                sb.append(0);
            }
        }
        return sb.toString();
    }

方法四:

 

 

 public static String decimalToBinary(int decimalSource) {
        StringBuffer sb = new StringBuffer();
        while (decimalSource != 0) {
            //此&運算,decimalSource & 1,目的是獲取最低位的二進制數值
            sb.append(decimalSource & 1);
            //此>>運算,decimalSource >> 1,目的是將獲取到的最低位二進制數值除去
            decimalSource = decimalSource >> 1;
        }
        return sb.reverse().toString();
    }
注意:負整數轉換爲二進制 爲 取反加一 
解釋:將該負整數對應的正整數先轉換成二進制,然後對其“取補碼”,再對取補後的結果加1即可。
例如要把-52換算成二進制:
1.先取得52的二進制:00110100
2.對所得到的二進制數取反:11001011
3.將取反後的數值加一即可:11001100 即:(-52)10進制=(11001100)2進制

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章