首页 > 编程语言 >Java 中常用的进制转换

Java 中常用的进制转换

时间:2022-10-05 10:31:46浏览次数:58  
标签:十六进制 转换 进制 二进制 num Integer Java 十进制

前言

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

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

二进制

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

如果要将二进制转换为十进制,则采用 按权展开求和方法,其步骤是先将二进制的数写成加权系数展开式,然后再更具十进制的加法规则进行求和。

十进制

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

Java 中常用的进制转换_十六进制

小数部分则不同于整数部分,小数部分要使用乘 2 取整法,即用十进制的小数部分乘以 2,然后取结果的整数部分,然后再用剩下的小数重复刚才的步骤,直到最后剩余的小数为 0 时停止。最后将每次得到的整数部分按照先后顺序正序排列,从而得到对应的二进制表示。

Java 中常用的进制转换_十六进制_02

八进制

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

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

Java 中常用的进制转换_十六进制_03

十六进制

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

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

例如,二进制的 、1111100111010111 可以转换为十六进制中的F9D7。

Java 中常用的进制转换_十六进制_04

常用进制转换

当然,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 中常用的进制转换_十六进制_05

相反的,如果我们要将一个 ​​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 中常用的进制转换_十六进制_06

总结

以上就是有关二进制、十进制、八进制、十六进制相关的知识点了。此外还介绍了 Java 中如何进行十进制向其他进制的转换方法,以及如何将其他进制转换为十进制。

标签:十六进制,转换,进制,二进制,num,Integer,Java,十进制
From: https://blog.51cto.com/u_15733182/5732320

相关文章

  • Java集合(严重缺失版)
    此笔记源自于b站up主青空の霞光的视频和他的笔记。笔记出处:JavaSE笔记(四)泛型与集合类_青空の霞光的博客-CSDN博客失策了,我应该先看前面的数据结构的。找资源的时候要......
  • JavaSpring的jdbcTemplate事务
    1、使用JdbcTemplate需要引入的依赖(spring的maven项目)<!--jdbcTemplate实现jar--><dependency><groupId>org.springframework</groupId><artifactId>spring......
  • 令人头秃的js隐式转换面试题,你能做对吗
    你有没有在面试中遇到特别奇葩的js隐形转换的面试题,第一反应是怎么会是这样呢?难以自信,js到底是怎么去计算得到结果,你是否有深入去了解其原理呢?下面将深入讲解其实现原理。......
  • 经常会采坑的javascript原型应试题
    一.前言原型和原型链在面试中历来备受重视,经常被提及。说难可能也不太难,但要真正完全理解,吃透它,还是要多下功夫的。下面为大家简单阐述我对原型和原型链的理解,若是觉得有......
  • 校验空格分隔的十六进制数的正则表达式
    项目中用到了类似:FFEE0102BBEE类型的十六进制数录入校验网络上没有找到相关的信息只有自己写一个来:方法一:^([\x0-\x255]{1,2}\\s)*([\x0-\x255]){1,2}$方法......
  • 费解的开关[二进制、递推]
    题面传送门[https://www.acwing.com/problem/content/description/97/]分析考虑逐行分析,以行递推如果不再改变第一行,则满足题意的点击方案最多1种理由是:如果第i行某一......
  • 14_Java中的抽象类
    Java中的抽象类一、抽象类的概述例如我们前面使用的动物类,并不是一个具体的事物,在这个类中我们是不应该给出方法的具体实现的,应当只是声明在Java中,一个没有......
  • 15_Java中的接口
    Java中的接口一、接口概述接口就是一种公共的规范标准,只要符合标准,大家都可以通用Java中的接口更多体现在对行为的抽象二、接口的特点1、接口用关......
  • java-内部类
    内部类的基本使用内部类概念在一个类中定义一个类。举例:在一个类A的内部定义一个类B,类B就被称为内部类我们把一个类放在另一个类的内部定义,称为内部类(innerclass)......
  • 05-RabbitMQ控制台入门及其Java简单操作
    MQ控制台简单操作建立Exchange新建Exchange成功新建Queue新建Queue成功建立Exchange与Queue的关系建立关系成功路由键:就是指发送到Exchange的消息,通......