首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >(图解)Java进制的转换,进制转换算法,进制转换原理,看完你就懂了!

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

作者头像
用户7886150
修改2021-04-28 17:53:52
修改2021-04-28 17:53:52
1.8K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: 实现二进制搜索算法的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中,进制的表示方法如下: 

进制表示方法举例二进制0b/0B0B1011八进制007654十六进制0x/0X0xa1f1

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

三、转换算法原理 

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

二进制的转换 八进制的转换 十进制的转换 十六进制的转换  注意:十进制的13等于十六进制的D, 十六进制的D等于十进制的13, 十六进制的D不等于十六进制的13 

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

System.out.println(11),输出十进制的11,这个应该不用多说了吧System.out.println(0b11);输出二进制的11,实际上是输出0011,即2^0 + 2^1 = 3System.out.println(0011);输出八进制的011,即8^0 + 8^1 = 9System.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

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档