BigInteger类(高精度整型)
位置:java.math.BigInteger
作用:提供高精度整型数据类型及相关操作
一、基本介绍
- BigInteger为不可变的任意精度的整数(对象创建后无法改变,每次运算均会产生一个新的对象)。
- 所有操作中,都以二进制补码形式表示 BigInteger(同Java 的基本整数类型)。
- 提供所有 Java 的基本整数操作符(* / + -等等)的对应物(一堆函数)。
- 提供 java.lang.Math 的所有相关方法,此外还提供模算术、GCD 计算(最大公约数)、质数测试、素数生成、位操作以及一些其他操作。
- 算术运算、逐位逻辑运算的语义完全模仿 Java 整数算术运算符的语义。
- 位移操作允许产生负位移距离,且忽略了无符号的右位移运算符(>>>)。
- 比较操作执行有符号的整数比较,类似于 Java 的关系运算符和相等性运算符执行的比较。
- 模算术操作用来计算余数、求幂和乘法可逆元。这些方法始终返回非负结果,范围在 0 和 (modulus - 1)(包括)之间。
- 位操作对其操作数的二进制补码表示形式的单个位进行操作。如有必要,操作数会通过扩展符号来包含指定的位。单一位操作不能产生与正在被操作的 BigInteger 符号不同的 BigInteger,因为它们仅仅影响单个位,并且此类提供的“无穷大词大小”抽象可保证在每个 BigInteger 前存在无穷多的“虚拟符号位”数。
- 当为任何输入参数传递 null 对象引用时,此类中的所有方法和构造方法都将抛出
NullPointerException
。
二、字段
- static BigInteger ONE //BigInteger常量1
- static BigInteger TEN //BigInteger常量10
- static BigInteger ZERO //BigInteger常量0
三、生成BigInteger对象
构造函数
- BigInteger( byte[] val ) //将包含BigInteger的二进制补码表示形式的byte数组转换为BigInteger
- BigInteger( int signum , byte[] magnitude ) //byte数组同上一条,signum表示符号:1为正,-1为负,0为零(signum为0时byte数组不可包含非零字节)
- BigInteger( int bitLength , int certainty ,Random rnd ) //生成BigInteger伪随机数,它可能是(概率不小于1 - 1/2certainty)一个具有指定 bitLength 的素数
- BigInteger( int numBits , Random rnd ) //生成BigInteger伪随机数,其值均匀分布于[ 0 , 2numBits - 1 )
- BigInteger( String val ) //将 BigInteger 的十进制字符串表示形式转换为 BigInteger(可包含前导负号)
- BigInteger( String val ,int radix ) //将指定基数(进制)的 BigInteger 的字符串表示形式转换为 BigInteger
四、常(suo)用(you)方法
算术运算(+ - * / % mod)
- BigInteger add( BigInteger val ) //返回其值为(this + val)的BigInteger
- BigInteger subtract( BigInteger val ) //返回其值为(this - val)的BigInteger
- BigInteger negate() //返回其值是(-this)的BigInteger
- BigInteger multiply( BigInteger val ) //返回其值为(this * val)的BigInteger
- BigInteger divide( BigInteger val ) //返回其值为(this / val)的BigInteger
- BigInteger remainder( BigInteger val ) //返回其值为(this % val)的BigInteger
- BigInteger[] divideAndRemainder( BigInteger val ) //返回包含(this / val)后跟(this % val)的两个BigInteger的数组
- BigInteger mod( BigInteger m ) //返回其值为(this mod m)的BigInteger(与%不同,其值永远为正,下同)
- BigInteger modInverse( BigInteger m ) //返回其值为(this-1 mod m)的BigInteger
- BigInteger modPow( BigInteger exponent , BigInteger m ) 返回其值为(thisexponent mod m)的BigInteger(exponent可以为负)
关系运算(== > >= < <= !=)
- int compareTo( BigInteger val ) //将此BigInteger与指定的BigInteger进行比较 ,this>val返回1,this==val返回0,this>val返回-1。使用:(a.compareTo(b) <op> 0),<op>表示关系运算符
- boolean equals( Object x ) //比较此BigInteger与指定的Object的相等性(当且仅当指定的 Object 是一个其值在数字上等于此 BigInteger 的 BigInteger 时,返回 true)
逻辑运算(& | ~ ^ &~)
- BigInteger and( BigInteger val ) //返回其值为(this & val)的BigInteger
- BigInteger or( BigInteger val ) //返回其值为(this | val)的BigInteger
- BigInteger not() //返回其值为(~this)的BigInteger
- BigInteger xor( BigInteger val ) //返回其值为(this ^ val)的BigInteger
- BigInteger andNot(BigInteger val) //返回其值为(this &~ val)的BigInteger
移位运算(<< >>)
- BigInteger shiftLeft( int n ) //返回其值为(this << n)的BigInteger,n可为负,此时相当于执行右移操作
- BigInteger shiftRight( int n ) //返回其值为(this >> n)的BigInteger,执行符号扩展,n可为负,此时相当于执行左移操作
其他二进制运算
- int bitCount() //返回此BigInteger的二进制补码表示形式中与符号不同的位的数量
- int bitLength() //返回此BigInteger的最小的二进制补码表示形式的位数,不包括符号位,对于正 BigInteger,这等于常规二进制表示形式中的位数
- boolean testBit( int n ) //当且仅当设置了指定的位时,返回true,即计算((this & (1 << n)) != 0)
- BigInteger setBit( int n ) //返回其值与设置了指定位的此BigInteger等效的BigInteger,即计算(this | (1 << n))
- BigInteger clearBit( int n ) //返回其值与清除了指定位的此BigInteger等效的BigInteger,即计算(this &~ (1 << n))
- BigInteger flipBit( int n ) //返回其值与对此BigInteger进行指定位翻转后的值等效的BigInteger,即计算(this ^ (1 << n))
- int getLowestSetBit() //返回此BigInteger最右端(最低位)1比特的索引(即从此字节的右端开始到本字节中最右端1比特之间的0比特的位数)如果此 BigInteger 不包含一位,则返回 -1,即计算(this==0? -1 : log2(this & -this))
BigInteger与其他类型转换
- static BigInteger valueOf( long val ) //返回其值等于指定long型变量值的BigInteger(比long小的基本类型可以转化为long呦)
- int intValue() //将此BigInteger转换为int,此转换类似于高精度变量向低精度变量的转换(如long到int),下同
- long longValue() //将此BigInteger转换为long
- float floatValue() //将此BigInteger转换为float
- double doubleValue() //将此BigInteger转换为double
- byte[] toByteArray() //返回一个byte数组,该数组包含此BigInteger的二进制补码表示形式
- String toString() //返回此BigInteger的十进制字符串表示形式
- String toString( int radix ) //返回此BigInteger的给定基数(进制)的字符串表示形式
数学函数
- BigInteger abs() //返回其值是此BigInteger的绝对值的BigInteger
- BigInteger gcd( BigInteger val ) //返回一个BigInteger,其值是abs(this)和abs(val)的最大公约数
- BigInteger pow( int exponent ) //返回其值为(thisexponent)的BigInteger,exponent必须为正数
- BigInteger max( BigInteger val ) //返回此BigInteger和val的最大值
- BigInteger min( BigInteger val ) //返回此BigInteger和val的最小值
- int hashCode() //返回此BigInteger的哈希码
- boolean isProbablePrime( int certainty ) //如果此BigInteger可能为素数,则返回true,如果它一定为合数,则返回false。(certainty为调用方允许的不确定性的度量,如果该调用返回 true,则此 BigInteger 是素数的概率超出 (1 - 1/2certainty),此方法的执行时间与此参数的值是成比例的)
- BigInteger nextProbablePrime() //返回大于此BigInteger的可能为素数的第一个整数
- static BigInteger probablePrime( int bitLength , Random rnd ) //返回有可能是素数的、具有指定长度bitLength的正BigInteger
- int signum() //返回此BigInteger的正负号,1为正,-1为负,0为零
JAVA API:https://docs.oracle.com/javase/7/docs/api/
一些写得不错的相关文章:
Java中的大数处理类BigInteger和BigDecimar浅析
BigInteger类(高精度整型)的更多相关文章
- [.NET开发] C# BigInteger 处理超大整型数字
今天遇到一个要处理XSD中Integer的数值区间的计算的问题,Integer这个类型的值区间理论上是可没有边界的,假设目前的值是1.5E+10000, 这个数字已经达到double和Int64都无法 ...
- python七类之整型布尔值
整型与布尔值 一.关键字:整型 --->int 布尔值----->bool : True 真 False 假 1.整形和布尔值都是不可变得不可迭代的数据类型 2.整型: 主 ...
- java中大整型BigInteger及setBit和testBit方法
最近在修改公司之前的项目,在项目中遇到了权限校验的问题,代码中出现了BigInteger的setBit()testBit()方法,之前未接触过,所以了解了下BigInteger. 在Java中,由CP ...
- ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 主要用于color整型.rgb数组.16进制互相转换(-12590395 <--> #3FE2C5 <--> ...
- 【java】线程安全的整型类AtomicInteger
一.遇见AtomicInteger 在看项目代码的时候看到这个类,发现其功能很简单,就是一个整型变量的类型,出于好奇看了其类定义. 该类位于java.util.concurrent.atomic下,在 ...
- C语言的整型溢出问题
整型溢出有点老生常谈了,bla, bla, bla… 但似乎没有引起多少人的重视.整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一 ...
- 算法笔记--java的BigInteger类及BigDecimal类
引包:import java.math.*; BigInteger类: 可以使用构造方法:public BigInteger(String val),或者valueOf(int)函数,如: BigIn ...
- 解析java.math.BigInteger类——构造函数
最早由于做作业,结识了java的BigInrger类.读着读着,越来越觉得有趣.后来作业做完,也不忍丢下它,索性把全部代码研究一遍. 开始的时候,一个上午时间最多读懂2个方法.但是还是有滋有味的坚持了 ...
- java 基础--8 种基本数据类型:整型、浮点型、布尔型、字符型 整型中 byte、short、int、long 的取值范围 什么是浮点型?什么是单精度和双精度?为什么不能用浮点型表示金额?
一.8种基本数据类型(4整,2浮,1符,1布): 整型:byte(最小的数据类型).short(短整型).int(整型).long(长整型): 浮点型:float(浮点型).double(双精度浮点 ...
随机推荐
- 第一个关于selenium项目
1.创建一个简单的Python工程 在主菜单中,选择File | New Project ,并指定Python解释器版本 2.创建python类,快捷键alt+insert 3.编写打开浏览器的代码, ...
- uva 1555 Garland
题意:有n个灯笼.第一个的高度是A,最后一个是B.灯笼的关系给出.并要求每一个灯笼的高度是非负数的.求最低的B 思路:推出公式:H[i]=2*H[i-1]+2-H[i-2],然后枚举H[2],在知道H ...
- Qt5.9 WebChannel
Qt WebChannel enables peer-to-peer communication between a server (QML/C++ application) and a client ...
- c++对象关系映射(ORM)框架
ORM(Object Relational Mapping, 对象关系映射),用来将基于对象的数据结构映射到SQL的数据结构中,即将基于对象的数据映射到关系表中的字段,然后我们可以通过对象提供的接口来 ...
- Hadoop MapReduce编程 API入门系列之自定义多种输入格式数据类型和排序多种输出格式(十一)
推荐 MapReduce分析明星微博数据 http://git.oschina.net/ljc520313/codeexample/tree/master/bigdata/hadoop/mapredu ...
- Kettle 版本及使用问题
kettle 简介 Kettle也叫PDI (Pentaho Data Intergration) Kettle 版本及下载 7.1及更早版本: https://sourceforge.net/pro ...
- WinForm——操作word文档
解决方案资源管理器——引用——(右击)添加引用——COM 1. 安装Office,添加引用COM里面的 Microsoft Word 14.0 Object. Library 2. 导命名空间 usi ...
- Spring @Scheduled 注解 定时器例子
<!--xmlns 多加下面的内容--> xmlns:task="http://www.springframework.org/schema/task" <!-- ...
- css处理图片下方留白问题
引用图片的时候,图片和下方内容会有一点小空白,大概如下图紫色横条: 不是说有margin还是padding,是因为ing是行级元素,浏览器就会默认留白了,这时候处理方法很简单,给img加上样式disp ...
- 软件开发的MVC构架
MVC:IDE开发环境开发时,无意中使用的软件结构. 转自于wikipedia:http://zh.wikipedia.org/wiki/MVC 软件的层次划分:框架--组件(设计模式)--算法与数据 ...