BigInteger通过将数字存储在整数数组中来存储许多数字
如果只使用一个整数数组,如何表示整数的正负呢?
中,需要另一个成员变量来指示该数的正负。
18927348*(10^9) 2347389543*(10^9) 834934878,最终从整体上看mag序列保存了10^9进制数。
1、以前数字存在于字符串中,大多数之间的四则运算和其他运算都是按排列进行的;
2、JDK的实现,这就是BigInteger;
3、BigInteger实现的接口:可序列化、可比较
4、signum属性为了区分正负数和0的标志位,整数用1表示,负数用-1表示,书口用0表示
5、mag是magnitude的缩写,mag数组存储BigInteger的数值大小
big-endian顺序,即,高位字节依次排列在低位地址,低位字节依次排列在高位地址的方式
little-endian正好相反
构建方法1
publicbiginteger(byte[]val ) {
if(val.length==0) ) ) )。
thrownewnumberformatexception (zerolengthbiginteger );
if(val[0]0) {
mag=makepositive(val; //此函数的作用是将负数的字节数组转换为正值。
signum=-1; //如果数组的第一个值为负数,则将数组存储在mag中,并将-1赋值给signum
} else {
mag=stripleadingzerobytes(val; 如果不是//负,则可以直接去除前面的无效零,并将其分配给mag
signum=(mag.length==0? 0 : 1;
}
}
构建方法2 :直接从字符串到BigInteger
publicstaticvoidmain (字符串[ ] args ) {
bigintegerbiginteger=newbiginteger (1234567899876543211234567898765678987654312345678987656789878987654321 );
system.out.println(biginteger );
}
.
//实现,10表示十进制
publicbiginteger (字符串val ) {
this(val,10 );
}
在java中,int表示-2^31至2^31-1,即- 2147483648至2147483647
一个int值最多可以存储10位十进制整数,存在溢出,最好存储9位
jdk将18927348347389543834934878分为18927348 | 347389543 | 834934878进行保存
保存mag[0]为18927348,mag[1]为347389543,mag[2]为834934878
6、BigInteger是不变的任意精度的整数
7、用二进制补数的形式表示BigInteger (例如Java的基本整数型)
8、BigInteger提供所有Java基本整数算子的对应物
9、并给出java.lang.Math的所有相关方法
10、将mag序列转换为原始数列的方法
继续除法运算,取馀数