码迷,mamicode.com
首页 > 编程语言 > 详细

(部分转载,部分原创) java大数类(1)

时间:2015-08-01 00:46:00      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:

头文件:

 import java.io.*;

 import java.util.*;

 import java.math.*;

BigInteger属于java.math.BigInteger

 

 

读入: 

Scanner cin = Scanner (System.in);

 while(cin.hasNext())//等价于!=EOF

 n=cin.nextInt(x);//读入一个int型x进制的数,一般x缺省,默认十进制

 n=cin.nextBigInteger(x);//读入一个x进制的大整数,一般x缺省,默认十进制

 

 

数据类型:

BigInteger 任意大的整数,原则上是,只要你的计算机的内存足够大,可以有无限位的

BigDecimal 任意大的实数,可以处理小数精度问题。

 

BigInteger中一些常见的常数:

BigInteger.ZERO, BigInteger.ONE, BigInteger.TEN

 

将int型的数赋值给BigInteger:

BigInteger.valueOf(k);

 

定义一个x进制的BigInteger:

BigInteger a = new Bigteger("123", x);

x缺省默认为十进制

 

 

基本的函数:

valueOf():  赋初值

add():  + a.add(b);

subtract():  -

multiply():  *

divide():  /

remainder():  this % val

divideAndRemainder():  a[0]=this / val; a[1]=this % val

pow():  a.pow(b)=a^b

gcd(), abs():  公约数,绝对值

negate():  取负数

signum():  符号函数

mod():  a.mod(b)=a%b;

shiftLeft():  左移,this << n ,this*2^n;

shiftRight():  右移,this >> n,this/2^n;

and():  &&,且;

or():  ||,或;

xor():  ^, 异或

not():  !, 非;

bitLength():  返回该数的最小二进制补码表示的位的个数,即 *不包括* 符号位 (ceil(log2(this <0 ? -this : this + 1)))。对正数来说,这等价于普通二进制表示的位的个数。

bitCount():   返回该数的二进制补码表示中不包扩符号位在内的位的个数。该方法在 BigIntegers 之上实现位向量风格的集合时很有用。

isProbablePrime():    如果该 BigInteger 可能是素数,则返回 true ;如果它很明确是一个合数,则返回 false 。 参数 certainty 是对调用者愿意忍受的不确定性的度量:如果该数是素数的概率超过了 1 - 1/2**certainty方法,则该方法返回 true 。执行时间正比于参数确定性的值。

compareTo():      根据该数值是小于、等于、或大于 val 返回 -1、0 或 1;

equals():      判断两数是否相等,也可以用compareTo来代替;

min(),max():      取两个数的较小、大者;

intValue(),longValue(),floatValue(),double():     把该数转换为该类型的数的值。

toString(x):   当要把计算结果输出时应该使用.toString(x)方法将其转换为x进制的字符串,一般x缺省,默认为十进制。

 

 

类型转换:

int -> BigInteger :  

int a = 3;

BigInteger b = BigInteger.valueOf(a);

 

BigInteger -> int :

 BigInteger a = BigInteger.TEN;

int b = a.intValue();

 

int -> String :

int a = 3;

String b = a.toString();

 

String -> int :

String a = "123";

int b = Intrger.parseInt(a);

(还有Float.parseFloat(),用法类似)

 

String -> BigInteger :

String a = "123";

BigInteger b = new BigINteger(a);

 

BigInteger -> String :

 BigInteger a = BigInteger.TEN;

String b = a.toString();

 

 

 

进制转换:

10进制 -> 16进制:

Integer.toHexString(4);

10进制 -> 2进制:

Integer.toBinaryString(4);

16进制 -> 10进制:

Integer.parseInt("4", 16);

 

 

 注意:

 关于remaindermod的区别:

BigInteger remainder(BigInteger val)
 和mod类似,区别在于remainder是取余运算,mod是模运算,具体区别如下图:

 技术分享

 

 

(部分转载,部分原创) java大数类(1)

标签:

原文地址:http://www.cnblogs.com/qiucz/p/4693387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!