携手创造,共同成长!这是我参加「日新方案 8 月更文挑战」的第 2 天,点击查看活动概况

前言

所谓进制转化,便是人们利用符号来计数的办法。进制转化由一组数码符号和两个基本要素“基数”和“位权”所构成。其间基数是指进位计数制中所选用的数码的个数,逢 n 进 1 中的 n 便是基数。而位权则指的是进位制中每一个固定位置所对应的单位制,而每一种进制中的某一个数的每位上都有一个权值 m,而且权值是位数减一,比方个位上的数的权值为 0(位数 1 – 1 = 0),而十位的权值为 1(位数 2 – 1 = 1)。

Java 学习中,咱们难免会和各种进制打交道。今日就来看看,在 Java 中最常用的几个进制的相关概念,以及如何利用 Java 来完成他们之间的相互转化!

二进制

二进制是计算机中选用最广泛的一种数制,用 0 和 1 两个数码来表明,其进位规矩是逢二进一,而借位规矩则是借一当二。

假如要将二进制转化为十进制,则选用 按权展开求和办法,其过程是先将二进制的数写成加权系数展开式,然后再更具十进制的加法规矩进行求和。

(1011)2=1∗23+0∗22+1∗21+1∗20=(11)10(1011)_2=1*2^3+0*2^2+1*2^1+1*2^0 = (11)_{10}

十进制

而一个十进制数要转化为二进制数,则需要将整数和小数部分别离转化,最终再进行组合。其间,整数部分选用除二取余,逆序排序的办法。具体办法是用 2 来整除一个十进制数,然后得到一个商和余数;然后再用 2 去除以商,然后又得到一个商和余数,重复这个过程,直到最终得到的商小于 1 时中止。最终把依照得到余数的先后顺序,逆序顺次排列,得到的数即为这个十进制数的二进制表明。

(15)10=(1111)2(15)_{10}=(1111)_2

Java 中常用的进制转换

小数部分则不同于整数部分,小数部分要使用乘 2 取整法,即用十进制的小数部分乘以 2,然后取结果的整数部分,然后再用剩下的小数重复方才的过程,直到最终剩余的小数为 0 时中止。最终将每次得到的整数部分依照先后顺序正序排列,然后得到对应的二进制表明。

(0.25)10=(0.01)2(0.25)_{10}=(0.01)_2

Java 中常用的进制转换

八进制

所谓八进制,便是每 3 位二进制作为一个单元,其间最小的数是 0,最大的数是 7,总共 8 个数字。

要将二进制的数转化为八进制,需要将 3 个连续的数拼成一组,然后再独立转成八进制中的数字。

例如,二进制的 111101011110111101011110 可以转化为八进制中的 75367536

Java 中常用的进制转换

十六进制

所谓十六进制,便是每 4 位二进制作为一个单元,其间最小数是 0,最大数是 15,总共 16 个数字,别离用 0 ~ 9、A、B、C、D、E、F 表明。

要将二进制转化为十六进制,需要将 4 个连续的数拼成一组,然后再独立转化为十六进制中对应的数字。

例如,二进制的 11111001110101111111100111010111 可以转化为十六进制中的 F9D7F9D7

Java 中常用的进制转换

常用进制转化

当然,Java 中也现已将常用的进制转化办法封装好了,咱们只需要调用对应办法即可。

转化 办法 回来
十进制 -> 二进制 Integer.toBinary(int num) 二进制字符串
十进制 -> 八进制 Integer.toOctalString(int num) 八进制字符串
十进制 -> 十六进制 Integer.toHexString(int num) 十六进制字符串
十进制 -> N 进制 Integer.toString(int num, int N) N 进制字符串
public class Main {
	public static void main(String[] args) {
		int num = 200;
        System.out.println(num + " 的二进制是:" + Integer.toBinaryString(num));
        System.out.println(num + " 的八进制是:" + Integer.toOctalString(num));
        System.out.println(num + " 的十六进制是:" + Integer.toHexString(num));
        System.out.println(num + " 的三进制是:" + Integer.toString(num, 3));
	}
}

Java 中常用的进制转换

相反的,假如咱们要将一个 N 进制的字符串 str 转化为十进制数,那么可以使用以下办法。

转化 办法 回来
N 进制 -> 十进制 Integer.parseInt(String str, int N) 十进制数
public class Main {
	public static void main(String[] args) {
            String str = "21104";
            int N = 5;
            System.out.println(str + " 的十进制是:" + Integer.parseInt(str, N));
 	}
}

Java 中常用的进制转换

总结

以上便是有关二进制、十进制、八进制、十六进制相关的常识点了。此外还介绍了 Java 中如何进行十进制向其他进制的转化办法,以及如何将其他进制转化为十进制。假如你刚好这些内容对你有所协助,那就来个一键三连吧!