Java 基礎 之 進制轉換

一:進制

進制是計算機中數(shù)據(jù)的一種表示方法。 N進制的數(shù)可以用0~(N-1) 的數(shù)表示, 超過9的用字母A-F 表示 .
10進制,就是 用 0~9 的數(shù)表示,逢10 進 1
16進制,就是 由 0-9,A-F組成, 與10進制的對應關系是:0-9 對應0-9;A-F對應10- 15(字母不區(qū)分大小寫)
2進制 由 0-1組成
8進制 由 0-7組成

1:n 進制 轉十進制

假設我們要將n進制轉換為十進制,首先我們從n進制的右邊為第一位數(shù)(從低位到高位),其權值是n的0次方,第二位是n的1次方,依次遞增下去,把最后的結果相加的值就是十進制的值了。
公式:
(xyz)n = x * n ^ 2 + y * n ^1 + z * n ^0
(101)2 = 1 * 2 ^2 + 0 * 2^1 + 1 * 2^0 = 5
(101)8 = 1 * 8 ^2 + 0 * 8^1 + 1 * 8^0 = 65
(101)16 = 1 * 16 ^2 + 0 * 16^1 + 1 * 16^0 = 257

2:十 進制 轉 n 進制

假設我們要將十進制轉換為n進制,首先我們十進制除以權值n,依次除下去,直到不能再被除為止,然后將余數(shù)從下往上取。

二 : 二進制,八進制,十六進制 轉 十進制

Solution 1: 用java提供的api完成轉換

    Integer.valueOf(String s, int radix)

Solution 2: 自己寫算法實現(xiàn)上面公式

/**
 * 轉換2,8,16進制成10進制
 * @param chars 2,8,16進制字符串
 * @param baseNum 2,8,16進制
 * @return 10進制數(shù)值
 */
private int calcIntValue(char[] chars, int baseNum) {
        int length = chars.length;
        int value = 0;
        for(char c : chars) {
            value +=  (Integer.valueOf(c) - 48) * Math.pow(baseNum, length - 1);
            length -= 1;
        }
        return value;
}

三: 十進制 轉 二進制,八進制,十六進制

Solution 1: 用java提供的api完成轉換

    Integer.toBinaryString(int i)
        Integer.toOctalString(int i)
        Integer.toHexString(int i)

Solution 2: 自己寫算法實現(xiàn)上面公式

    /**
     * 將10進制轉成2,8,16進制
     * @param decimal 10進制數(shù)值
     * @param baseNum 2,8,16進制
     * @return 2,8,16進制 串
     */
    private String calcConvertString(int decimal, int baseNum) {
        this.dataStack = new LinkedList<Integer>();
        StringBuilder sbBinary = new StringBuilder();

        int x = 0;
        while (0 != (decimal / baseNum)) {
            x = decimal % baseNum;
            this.dataStack.push(x);

            decimal = decimal / baseNum;
        }

        this.dataStack.push(decimal % baseNum);
        while (null != this.dataStack.peek()) {
            sbBinary.append(this.dataStack.pop());
        }

        return sbBinary.toString();
    }
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,995評論 0 2
  • 進位制/位置計數(shù)法是一種記數(shù)方式,故亦稱進位記數(shù)法/位值計數(shù)法,可以用有限的數(shù)字符號代表所有的數(shù)值??墒褂脭?shù)字符號...
    zllylgw閱讀 2,504評論 0 0
  • 十進制--->二進制 對于整數(shù)部分,用被除數(shù)反復除以2,除第一次外,每次除以2均取前一次商的整數(shù)部分作被除數(shù)并依次...
    張輕舟閱讀 1,145評論 1 3
  • (一)、進制之間的轉換 八進制:0-7 十六進制:0-F 1、十進制 與 二進制之間的轉換 (1)、十進制轉換為二...
    MPPC閱讀 22,209評論 2 49
  • 舉家攜小姑探望雙親,是每逢佳節(jié)最重要的事兒,讓“倍思親”化作“倍歡欣”,該是兒女最大的孝心。 兩個多小時的車程,飛...
    曉賢偶拾閱讀 546評論 3 4

友情鏈接更多精彩內(nèi)容