background image

    BigInteger 和 BigDecimal 相 比 , 大 部 分 的 功 能 是 相 同 的 , 主 要 的 差 异 为
BigInteger 仅仅表示大整数的封装,而不能表示浮点数,与此同时,BigInteger 还提供
了大量的位操作运算,这个和 C++中的 BitSet 非常类似。如果我们的在应用中只是需要
大整数,那么应该首先该类,而不是 BigDecimal,如果我们的应用逻辑中有多于 64 种
状态(long 表示 64bits)的情况,可以考虑用 BigInteger 的位操作功能。
  ①基本的数学运算和数学函数应用:
 1     public static void main(String args[]) {
 2         BigInteger bi1 = new BigInteger("1234567890123456890");
 3         BigInteger bi2 = BigInteger.valueOf(123L);
 4         System.out.printf("bi1 = %s after added\n",bi1.add(bi2));
 5         System.out.printf("bi1 = %s after multiply\n",bi1.multiply(bi2));
 6         System.out.printf("bi1 = %s after subtract\n",bi1.subtract(bi2));
 7         System.out.printf("bi1 = %s after divide\n",bi1.divide(bi2));
 8         System.out.printf("bi1 = %s after negate\n",bi1.negate());
 9         int exponent = 2;
10         System.out.printf("bi1 = %s after pow\n",bi1.pow(exponent));
11     }
12     /*    输出结果如下:
13         bi1 = 1234567890123457013 after added
14         bi1 = 151851850485185197470 after multiply
15         bi1 = 1234567890123456767 after subtract
16         bi1 = 10037137318076885 after divide
17         bi1 = -1234567890123456890 after negate
18         bi1 = 1524157875323883924401765803688472100 after pow
19     */
  ②将 BigInteger 的值转换为各种进制的字符串表示:
 1     public static void main(String args[]) {
 2         BigInteger number = new BigInteger("2008");
 3         System.out.println("Number      = " + number);
 4         System.out.println("Binary      = " + number.toString(2));
 5         System.out.println("Octal       = " + number.toString(8));
 6         System.out.println("Hexadecimal = " + number.toString(16));
 7         number = new BigInteger("FF", 16);
 8         System.out.println("Number      = " + number);
 9         System.out.println("Number      = " + number.toString(16));
10     }
11     /*    输出结果如下:
12         Number      = 2008
13         Binary      = 11111011000
14         Octal       = 3730
15         Hexadecimal = 7d8
16         Number      = 255
17         Number      = ff
18     */