美文网首页Java
Java 基础 之 进制转换

Java 基础 之 进制转换

作者: 蓉漂里的小白 | 来源:发表于2019-07-26 17:44 被阅读0次

一:进制

进制是计算机中数据的一种表示方法。 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();
    }

相关文章

  • Java 基础 之 进制转换

    一:进制 进制是计算机中数据的一种表示方法。 N进制的数可以用0~(N-1) 的数表示, 超过9的用字母A-F 表...

  • java学习路径

    一、java基础知识 (30天) 1. 语言基础, java基础,环境变量 2. 语言基础, 进制转换 3. 语言...

  • Java learning(二: Java语言基础)

    本阶段讲解了Java语言的基本语法,是Java语言的基本知识 Java语言基础-计算机进制转换:二进制、八进制、十...

  • 数据类型与运算符

    进制转换 在我的Java基础知识整理,补充内容,里面有十进制和二进制之间的转换,我这里就不再写十进制和二进制之间的...

  • byte和其它类型之间的互转

    把大佬的代码复制了下,做个笔记 Java基础数据类型二进制转换

  • java面试题

    java基础: 0.如何将十进制数转换为2进制数; 1.char用几个字节表示,可以表示任意字符吗?在java中使...

  • Java基础方法9(进制转换)

    9.5.进制转换 文集推荐: Java基础方法集1Python基础知识完整版Spring Boot学习笔记Linu...

  • Java学习经验与总结(02)

    一 Java语言基础 1 进制的了解及转换 进制就是进位制,是人们规定的一种进位方法。几进制就是表示某位置的数到几...

  • Unicode编码, 字节, 进制转换, 颜色编码

    进制转换基础 进制转换基础,也可看另一篇笔记 字节,unicode,进制转换 计算机存储单元, 一个字节由8位2进...

  • 2018-11-27 (Review-1)

    一 (进制转换, 补码反码, 字符基础, 位运算) 1.进制的转换二进制bin(整数)八进制oct(整数)十六进制...

网友评论

    本文标题:Java 基础 之 进制转换

    本文链接:https://www.haomeiwen.com/subject/bfidrctx.html