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("4324234132412");
BigInteger number2 = new BigInteger("54323423423432");
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);