Java 基础 之 进制转换

一:进制

进制是计算机中数据的一种表示方法。 N进制的数可以用0~(N-1) 的数表示, 超过9的用字母A-F 表示 .
10进制,就是 用 0~9 的数表示,逢10 进 1
16进制,就是 由 0-9,A-F组成, 与10进制的对应关系是:0-9 对应0-9;A-F对应10- 15(字母不区分大小写)
2进制 由 0-1组成
8进制 由 0-7组成

1:n 进制 转十进制

假设我们要将n进制转换为十进制,首先我们从n进制的右边为第一位数(从低位到高位),其权值是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,依次除下去,直到不能再被除为止,然后将余数从下往上取。

二 : 二进制,八进制,十六进制 转 十进制

Solution 1: 用java提供的api完成转换

    Integer.valueOf(String s, int radix)

Solution 2: 自己写算法实现上面公式

/**
 * 转换2,8,16进制成10进制
 * @param chars 2,8,16进制字符串
 * @param baseNum 2,8,16进制
 * @return 10进制数值
 */
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: 自己写算法实现上面公式

    /**
     * 将10进制转成2,8,16进制
     * @param decimal 10进制数值
     * @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();
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,438评论 0 2
  • 进位制/位置计数法是一种记数方式,故亦称进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号...
    zllylgw阅读 2,407评论 0 0
  • 十进制--->二进制 对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次...
    张轻舟阅读 1,086评论 1 3
  • (一)、进制之间的转换 八进制:0-7 十六进制:0-F 1、十进制 与 二进制之间的转换 (1)、十进制转换为二...
    MPPC阅读 22,081评论 2 49
  • 举家携小姑探望双亲,是每逢佳节最重要的事儿,让“倍思亲”化作“倍欢欣”,该是儿女最大的孝心。 两个多小时的车程,飞...
    晓贤偶拾阅读 514评论 3 4