Java之BigInteger用法
BigInteger在Java中用于操作大整数,当一个数超过了Long表示的最大范围时就可以考虑使用BigInteger来操作。
BigInteger的使用方法很多,也可以用于进制转换的一些操作,本文记录了一些BigInteger的常用方法。
一、常用方法
方法名 作用
add(); 相加
subtract(); 相减
multipy(); 相乘
divide(); 相除
remainder(); 取余
pow(); n次方
abs(); 绝对值
negate(); 相反数
gcd(); 最大公约数
mod(); 相当于remainder
min(); 两者中的最小值
max(); 两者中的最大值
and(); 按位与
andNot(); 按位与非
not(); 当前大数的非
or(); 按位或
xor(); 按位异或
shiftLeft(); 当前大数左移n位
shiftRight(); 当前大数右移n位
bitLength(); 当前大数的二进制位数
compareTo(); 大数比较大小
BigInteger number1 = new BigInteger("123");
BigInteger number2 = new BigInteger("456");
BigInteger result;
number1 = number1.add(number2);
number2 = number2.subtract(number1);
number2 = number1.multiply(number2);
number2 = number1.divide(number2);
number2 = number2.remainder(number1);
number2 = number2.pow(10);
number2 = number2.remainder(number1);
number2 = number2.gcd(number1);
result = number2.min(number1);
result = number2.and(number1);
result = number2.or(number1);
result = number2.andNot(number1);
result = number2.not();
result = number2.xor(number1);
result = number2.shiftLeft(10);
result = number2.shiftRight(6);
BigInteger number3 = new BigInteger("10");
System.out.println(number3.bitLength());
System.out.println(number2);
if (number1.compareTo(number2) > 0) {
System.out.println("a > b");
} else if (number1.compareTo(number2) < 0) {
System.out.println("a < b");
} else {
System.out.println("a = b");
}
二、进制转换
利用BigInteger的构造函数可以实现任意进制的转换。
// 十进制转二进制
String str1 = new BigInteger("100", 10).toString(2);
System.out.println(str1);
// 二进制转十进制
String str2 = new BigInteger("1010101010111", 2).toString(10);
System.out.println(str2);
// 十六进制转八进制
String str3 = new BigInteger("7E6A", 16).toString(8);
System.out.println(str3);