public class BigIntegerTest {
@Test
void test(){
/*传递一个纯数字格式的字符串构造一个BigInteger*/
BigInteger b1 = new BigInteger("10");
BigInteger b2 = new BigInteger("2");
/*或者可以指定一个n进制数格式的字符串
* 此时字符串中就只能包含0和1*/
BigInteger b3 = new BigInteger("1010101",2);//进制数有效范围为 2~36,不在此范围内按十进制处理
/*运算方式*/
b3 = b1.add(b2);// b1 + b2
b3 = b1.subtract(b2);// b1 - b2
b3 = b1.and(b2);// b1 & b2
b3 = b1.mod(b2);// b1 % b2
b3 = b1.or(b2);// b1 | b2
b3 = b1.xor(b2);// b1 ^ b2
b3 = b1.multiply(b2);// b1 * b2
b3 = b1.divide(b2);// b1 / b2
b3 = b1.shiftLeft(2);// b1 << 2
b3 = b1.shiftRight(2);// b1 >> 2
b3 = b1.negate();// -b1
b3 = b1.abs();// |b1|
b3 = b1.pow(2);// Math.pow(b1.2)
/*转换为String*/
String s = b3.toString();//默认转为十进制数
s = b3.toString(36);//有效范围 2~36,不在此范围内默认按十进制处理
/*有了BigInteger,便可以计算任意大小的整型数值,而且精度不会丢失*/
/*来看一下围棋的组合方式有多少种吧
* 棋盘19*19 总共361个落子点,每个点都有黑,白,无三种选择
* 所以所有的排列方式就有 3^361种
* 来看看这个数有多么恐怖吧*/
b3 = new BigInteger("3").pow(361);
StringBuilder sb = new StringBuilder(b3.toString());
int check = sb.length()/4;
for(int i=1;i<=3;i++){
sb.insert(check*i,'\n');
}
System.out.println(sb);
/*除次之外还有处理超高精度的BigDecimal 与BigInteger的使用类似
* 他多了一些处理精度的方法,没有位运算*/
}
}
看到这我都懒得去个,十,百,千,万。。。的去数了
这也是为什么说围棋千古无重局的原因了