大数运算(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 ...
随机推荐
- Oracle实例的启动和关闭
启动模式 1.NoMount 模式(启动实例不加载数据库) 命令:startup nomount 讲解:这种启动模式只会创建实例,并不加载数据库,Oracle仅为实例创建各种内存结构和服务进程,不会打 ...
- [转帖]查看oracle中表的索引
oracle中表的索引信息存在 user_indexes 和 user_ind_columns 两张表里面,其中 user_indexes 系统视图存放是索引的名称以及该索引是否是唯一索引等信息, u ...
- [转帖]【P1】Jmeter 准备工作
文章目录 一.Jmeter 介绍 1.1.Jmeter 有什么样功能 1.2.Jmeter 与 LoadRunner 比较 1.3.常用性能测试工具 1.4.性能测试工具如何选型 1.5.学习 Jme ...
- [转帖]auto_explain
https://help.kingbase.com.cn/v8/development/sql-plsql/ref-extended-plug-in/auto_explain.html 6.1. 插件 ...
- [转帖]Linux-文本处理三剑客awk详解+企业真实案例(变量、正则、条件判断、循环、数组、分析日志)
https://developer.aliyun.com/article/885607?spm=a2c6h.24874632.expert-profile.313.7c46cfe9h5DxWK 简介: ...
- 查看java所有的线程信息
最近一直有一个困惑, 不知道如何查看所有的java的线程信息. 今天看blog时发现了一个简单方法 ps -Tp $pid 就可以了 也可以使用 ps- Lfp $pid的方式 这里简单写一下统计方法 ...
- Oracle12c 快速启动命令设置
Oracle12c 安装完成之后 一般不会自动启动需要进行一下简单的设置才可以. 方法也比较简单. 可以使用 oracle 自带的 dbstart的命令执行服务启动 需要注意的事项是: 第一修改一个参 ...
- ELK搭建简单说明
ELK搭建简单说明 简单说明 周天陪孩子学习,自己简单研究了下如何处理 不是很系统,仅是能够展示部分文件的日志. 需要有很多坑需要进行填充. 搭建模式 自己采取rpm包方式进行搭建 183 机器上面安 ...
- 我对computed的理解-以及computed的传参
computed 传参 <template> <div> <p>computed传参的写法:{{ who1Params('--我是传参的内容') }}</p& ...
- OpenIM集群(非k8s)部署文档
自行部署etcd/zookeeper/mysql/kafka/mongo/redis集群,可以根据此性能评估服务器需求. 以下是针对一台华为云主机s3的压测数据:8核16G内存,普通磁盘(非SSD)( ...