一、思考
写在前面,思考下列代码输出结果:
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 删除。