(图解)Java进制的转换,进制转换算法,进制转换原理,看完你就懂了!

一、思考

写在前面,思考下列代码输出结果:

package com.zzb.mybatis.factory;

/**
 * @ClassName Main
 * @Description TODO
 * @Author zzb
 * @Date 2020/9/9 14:22
 */
public class Main {
     
    public static void main(String[] args) {
     
        System.out.println(11);
        System.out.println(0b11);
        System.out.println(0011);
        System.out.println(0x11);
    }
}

输出结果是:
(图解)Java进制的转换,进制转换算法,进制转换原理,看完你就懂了!_第1张图片

二、原理

java中,进制的表示方法如下:

进制 表示方法 举例
二进制 0b/0B 0B1011
八进制 0 07654
十六进制 0x/0X 0xa1f1

其中十六进制数中有字母a-f是因为在十六进制里面,数字10~15分别用字母a-f表示
通过对进制的表示方法的了解,接下来我们看看进制转换的具体算法

三、转换算法原理

各个进制的第一位第二位…第n位代表的数值表:

  • 二进制的转换
    (图解)Java进制的转换,进制转换算法,进制转换原理,看完你就懂了!_第2张图片
  • 八进制的转换
    (图解)Java进制的转换,进制转换算法,进制转换原理,看完你就懂了!_第3张图片
  • 十进制的转换
    (图解)Java进制的转换,进制转换算法,进制转换原理,看完你就懂了!_第4张图片
  • 十六进制的转换
    (图解)Java进制的转换,进制转换算法,进制转换原理,看完你就懂了!_第5张图片
    注意:十进制的13等于十六进制的D,
    十六进制的D等于十进制的13,
    十六进制的D不等于十六进制的13

我们对进制的算法原理也有了一些初步的认识,下面对代码段进行分析:

  1. System.out.println(11),输出十进制的11,这个应该不用多说了吧
  2. System.out.println(0b11);输出二进制的11,实际上是输出0011,即2^0 + 2^1 = 3
  3. System.out.println(0011);输出八进制的011,即8^0 + 8^1 = 9
  4. System.out.println(0x11);输出的16进制为11,即16^0 + 16^1 = 17

三、进制转换的算法

实际上,java已经为我们封装好了进制的转换,只需要调用相应的方法即可以方便的完成进制的转换,进制的转换及对应的方法如下表所示:

进制的转换 对应的方法
十进制转二进制 Integer.toBinaryString(value);
十进制转八进制 Integer.toOctalString(value);
十进制转十六进制 Integer.toHexString(value);
十进制转n进制 Integer.toString(value, n);
n进制转十进制 Integer.parseInt((String) value,(int) n);
package com.zzb.mybatis.factory;

/**
 * @ClassName Main
 * @Description TODO
 * @Author zzb
 * @Date 2020/9/9 14:22
 */
public class Main {
     
    public static void main(String[] args) {
     
        Integer value = 13;
        System.out.println(value + "的二进制是:" + Integer.toBinaryString(value));
        System.out.println(value + "的八进制是:" + Integer.toOctalString(value));
        System.out.println(value + "的十六进制是:" + Integer.toHexString(value));
        System.out.println(value + "的四进制是:" + Integer.toString(value, 4));


        /**
         * n进制转化为十进制
         * Integer.parseInt((String) value,(int) n);
         * 此处value应该是String类型
         */
        System.out.println("十六进制的13转换成十进制是"+Integer.parseInt(value.toString(),16));
    }
}

结果:
13的二进制是:1101
13的八进制是:15
13的十六进制是:d
13的四进制是:31
十六进制的13转换成十进制是19

你可能感兴趣的:(java,java)