package com.wh.BigInteger;import java.math.BigInteger;import java.util.Arrays;/** * @author 王恒 * @datetime 2017年4月6日 上午11:08:21 * @description * 实现两个超级大的数据进行运算 */public class TestBigInteger { public static void main(String[] args) { BigInteger b1 = new BigInteger("111111111111111111111111111111111111111111"); BigInteger b2 = new BigInteger("222222222222222222222222222222222222222222"); BigInteger b3 = new BigInteger("10"); //相加 System.out.println(b1.add(b2)); //减去 System.out.println(b1.subtract(b2)); //相乘 System.out.println(b1.multiply(b2)); //相除 System.out.println(b2.divide(b3)); //取余 System.out.println(b2.remainder(b3)); //返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组 System.out.println(Arrays.toString(b2.divideAndRemainder(b3))); System.out.println("\n\n"); //a.pow(b) a的b次方 a是Integer类型 b是int类型 System.out.println(b1.pow(10)); //negate取反数 System.out.println("negate() "+b1.negate()); System.out.println("\n\n以下为位运算"); //shiftLeft 左位移 shiftRight 右位移 System.out.println("左位移: "+b1.shiftLeft(2)); System.out.println("右唯一: "+b1.shiftRight(2)); //and:与 or:或 反码:~(加一取反) System.out.println("and:与 "+b1.and(b2)); System.out.println("or:或 "+b1.or(b2)); System.out.println("反码:~ "+b1.not()); System.out.println("\n\n以下为比较运算"); System.out.println(b1.compareTo(b2));//值只有-1、0、1分别对应<、=、> System.out.println(b2.compareTo(b1)); System.out.println(b2.compareTo(b2)); System.out.println(b1.equals(b2));//比较值是否相等 System.out.println(b1.equals(b1)); System.out.println(b1.max(b2));//给出两者之间的最大值 System.out.println(b1.min(b2));//给出两者之间的最小值 }}
运算结果:
333333333333333333333333333333333333333333-11111111111111111111111111111111111111111124691358024691358024691358024691358024691308641975308641975308641975308641975308642222222222222222222222222222222222222222222[22222222222222222222222222222222222222222, 2]286797199079244131332225723124083690656613672283088775926871539310870055713547973981830372425140375061578119065354852721792901011661948180202381259878763579451954764039338146620324977185189604156428598178760679846232913097169726611955208182084556710224309621717847073734227136689544918036932527850895361396335442651304897816078075313164451661202668091206709514013338618237095867402327523490604258900950612575601negate() -111111111111111111111111111111111111111111以下为位运算左位移: 444444444444444444444444444444444444444444右唯一: 27777777777777777777777777777777777777777and:与 1366618052755712315811601266990055448966or:或 331966715280577621017521732066343277884367反码:~ -111111111111111111111111111111111111111112以下为比较运算-110falsetrue222222222222222222222222222222222222222222111111111111111111111111111111111111111111