大数运算(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;
}
声明:本文转自大数运算(BigInteger)与进制转换
大数运算(BigInteger)与进制转换的更多相关文章
- 利用java中的BigInteger实现进制转换
[原创] java中的进制BigInteger十分的强大,而且好用,他可以表示任意大的整数,同时还可以进行进制转换,十分的方便, 代码示例: package com.jiajia.demo_1; im ...
- JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算
JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...
- import导入模块,==和is,浅拷贝和深拷贝,进制转换,位运算,私有化,property装饰器
'''import导入模块'''import sysprint(sys.path) sys.path.append('D://ASoft/Python/PycharmProjects')import ...
- C#的格式化(进制转换|位运算)
1.首先做一下知识的普及C或c Currency 货币格式D或d Decimal 十进制格式E或e Exponent 指数格式F或f Fixed point (float)固定精度格式G或g Gene ...
- Python 进制转换、位运算
一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...
- 【JavaScript】进制转换&位运算,了解一下?
前言 在一般的代码中很少会接触到进制和位运算,但这不代表我们可以不去学习它.作为一位编程人员,这些都是基础知识.如果你没有学过这方面的知识,也不要慌,接下来的知识并不会很难.本文你将会学习到: 进制转 ...
- Java 进制转换(二进制(负),八进制,十进制,十六进制),位运算、逻辑运算(2)
负数的二进制表现形式:其实就是该数的绝对值取反+1. 进制转换(二进制,八进制,十进制,十六进制),原理解析 十六进制的表现形式: (2)(与.异或.左移.右移.三元运算符)
- java se系列(二) 关键字、注释、常量、进制转换、变量、数据类型转换、运算符
1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名.方法名.类名.包名. 1.2 常见的关键字 备注 ...
- poj1220(短除法实现任意进制转换)
题目链接:https://vjudge.net/problem/POJ-1220 题意:给定a进制的大数s,将其转换为b进制.其中2<=a,b<=62. 题意:一般进制转换是以10进制为中 ...
- POJ 1220 大数字的进制转换,偷下懒,用java
题意为进制转换,Java的大数类就像是作弊 import java.math.BigInteger; import java.util.Scanner; public class Main { pub ...
随机推荐
- 【Git】用法小记
解决windows环境下的CRLF与unix环境下的LF问题,windows提交时CRLF=>LF,签出时LF=>CRLF,unix环境保留 git config --global cor ...
- 2021-10-13Docker
一.简介 1.技术前提 了解linux 修改虚拟机ip为静态: vim /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO="stati ...
- Sonarqube 二进制的安装与简单使用
Sonarqube 二进制的安装与简单使用 背景 使用容器安装 sonarqube 发现无法使用PG数据库 尝试了很长时间没搞定 想了想还是使用 二进制的方式进行部署吧. 下载 https://bin ...
- [转帖]记一次探索内存cache优化之旅
https://developer.aliyun.com/article/972803 背景 项目上线以来,曾出现上传镜像.下发镜像时可用内存不足,性能发生抖动的情况.研究发现是容器的 page ca ...
- [转帖]redis缓存命中率介绍
缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据. 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作.原因可能是由于缓存中根本不存在,或者缓存已经过期. 通常来讲 ...
- [转帖]前后台切换命令(ctrl+z jobs bg fg &)
当我在终端里面运行某个命令的时候,结果不是很快就能出来的那种,或者是一大堆字在屏幕上狂翻.这个时候,有时ctrl+c也不起作用,那我会用ctrl+z退出来,这个很有效,但是说实话我不知道为什么这个可以 ...
- [转帖]kafka_export 部署实战
https://zhuanlan.zhihu.com/p/57704357 Kafka Exporter 监控 Kafka 实时数据 需要安装的组件 Prometheus:时序数据库,按时间保存监控历 ...
- [转帖]人大金仓- KWR 报告初体验
[本文正在参与炫"库"行动-人大金仓有奖征文] 开发者请集结丨炫"库"行动--2021人大金仓征文大赛悬赏万元等你来! 最近一直在研究 Oracle 的 AWR ...
- [转帖]超线程 Smt 究竟可以快多少?
https://www.51cto.com/article/686171.html 刚才我们关闭SMT是把CPU10-CPU19全关了,只留下每对里面的1个CPU,也就是留下了CPU0-CPU9. 默 ...
- [转帖]总结:记一次K8S容器OOM案例
一.背景 最近遇到个现象,hubble-api-open组件过段时间会内容占满,从而被K8S强制重启. 让我困惑的是,已经设置了-XX:MaxRAMPercentage=75.0,我觉得留有了一定的空 ...