Java大数运算BigInteger与进制转换详解

 更新时间:2023年09月23日 11:13:21   作者:little_fat_sheep  
这篇文章主要介绍了Java大数运算BigInteger与进制转换详解,Java 提供了 BigInteger(大整数)类和 BigDecimal(大浮点数)类用于大数运算,这两个类都继承自 Number 类(抽象类),由于 BigInteger 在大数运算中更常见,需要的朋友可以参考下

1 前言

Java 提供了 BigInteger(大整数)类和 BigDecimal(大浮点数)类用于大数运算,这两个类都继承自 Number 类(抽象类)。

由于 BigInteger 在大数运算中更常见,本博客只介绍 BigInteger,另外也介绍下 Java 内置的进制转换函数,非常好用!!!

2 BigInteger 常用方法

包:import java.math.BigInteger;

//初始化
public BigInteger(String val)
public BigInteger(byte[] val)
public static BigInteger valueOf(long val)
//四则运算
public BigInteger add(BigInteger val)  //加法
public BigInteger subtract(BigInteger val)  //减法
public BigInteger multiply(BigInteger val)  //乘法
public BigInteger divide(BigInteger val)  //除法(整除)
//取余(取模)
public BigInteger mod(BigInteger m)
public BigInteger remainder(BigInteger val)  
//其他基本运算
public BigInteger negate()  //取反
public BigInteger abs()  //绝对值
public BigInteger pow(int exponent)  //指数
public BigInteger max(BigInteger val)  //较大者
public BigInteger min(BigInteger val)  //较小者
public BigInteger gcd(BigInteger val)  //最大公约数
//判断与比较
public int compareTo(BigInteger val)  //比较大小
public boolean equals(Object x)  //判断是否相等
//十进制转换为其他进制
public byte[] toByteArray()  //转换为二进制数组
public String toString(int radix)  //转换为 radix 进制数,2<=radix<=36,否则令radix=10
//其他进制转换为十进制
public BigInteger(String val, int radix)  //将 radix 进制的val转换为十进制,2<=radix<=36,否则抛出NumberFormatException异常

3 Integer 类中进制转换

由于数字只能由 '0'-'9' 和 'a'-'z' 表示,因此最多只能是36进制。在进制转换时,经常会用到参数 radix (基数),表示进制数,因此 2<=radix<=36。当 radix 不在此区间时,若是十进制转换为 radix 进制,令 radix=10;若是 radix 进制转换为十进制,抛出NumberFormatException异常.

3.1 十进制转换为其他进制

public static String toBinaryString(int i)  将i转换为2进制
public static String toOctalString(int i)  将i转换为8进制
public static String toHexString(int i)  将i转换为16进制
public static String toString(int i, int radix)  将i转换为 radix 进制,2<=radis<=36,否则令radis=10

3.2 其他进制转换为十进制

//将 radix 进制数s转换为十进制,2<=radix<=36,否则抛出NumberFormatException异常
public static int parseInt(String s, int radix) throws NumberFormatException
public static Integer valueOf(String s, int radix) throws NumberFormatException

3.3 任意进制之间的转换

//将 m 进制数转换为 n 进制数
public static String transform(String s_m,int m,int n) {
    Integer tem=Integer.parseInt(s_m,m); //将m进制的s_m转换为10进制
    String s_n=Integer.toString(tem,n); //将tem转换为n进制
    return s_n;
}

到此这篇关于Java大数运算BigInteger与进制转换详解的文章就介绍到这了,更多相关Java的BigInteger与进制转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Maven在Windows中的配置以及IDE中的项目创建实例

    Maven在Windows中的配置以及IDE中的项目创建实例

    下面小编就为大家带来一篇Maven在Windows中的配置以及IDE中的项目创建实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Spring框架开发IOC两种创建工厂方法详解

    Spring框架开发IOC两种创建工厂方法详解

    这篇文章主要介绍了Spring框架IOC两种创建工厂方法详解,文中附含详细的代码示例分别对静态方法和实例方法创建工厂作了简要的分析
    2021-09-09
  • 被kafka-client和springkafka版本坑到自闭及解决

    被kafka-client和springkafka版本坑到自闭及解决

    这篇文章主要介绍了被kafka-client和springkafka版本坑到自闭及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java面试题冲刺第五天--基础篇2

    Java面试题冲刺第五天--基础篇2

    这篇文章主要为大家分享了最有价值的三道java面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 教你在 Java 中实现 Dijkstra 最短路算法的方法

    教你在 Java 中实现 Dijkstra 最短路算法的方法

    这篇文章主要教你在 Java 中实现 Dijkstra 最短路算法的方法,在实现最短路算法之前需要先实现带权有向图,文章中给大家介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • volatile与happens-before的关系与内存一致性错误

    volatile与happens-before的关系与内存一致性错误

    本文讲了Java并发编程中volatile变量、happens-before与内存一致性错误,下面来和小编一起学习下如何解决
    2019-05-05
  • Java8中用foreach循环获取对象的index下标详解

    Java8中用foreach循环获取对象的index下标详解

    这篇文章主要给大家介绍了关于Java8中用foreach循环获取对象的index下标的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java实现在线考试系统与设计(学生功能)

    Java实现在线考试系统与设计(学生功能)

    这篇文章主要介绍了Java实现在线考试系统与设计(学生功能),本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 一文带你搞懂Spring响应式编程

    一文带你搞懂Spring响应式编程

    相信响应式编程经常会在各种地方被提到。本篇就为大家从函数式编程一直到Spring WeFlux做一次简单的讲解,并给出一些示例,希望大家可以更好的理解响应式编程
    2022-07-07
  • Java编码辅助工具Lombok用法详解

    Java编码辅助工具Lombok用法详解

    这篇文章主要介绍了Java编码辅助工具Lombok用法详解,可以使用Lombok来避免这种重复的操作,减少非核心代码的臃肿,提高编码效率,需要的朋友可以参考下
    2019-06-06

最新评论